大数据第三天

发布时间:2019-05-12 | 分类:Sqoop

标签: 

大数据第三天

1.HBase————分布型数据库(NoSQL)
	1.表  存储管理数据
	2.行键	类似关系型数据库中的主键  HBase自带  一般为查询比较多的列
	3.列族  列的集合   在定义表时指定的
	4.时间戳 列的一个属性  如果不指定时间戳,默认取最新的数据
	5.优点
		1.海量数据秒级简单查询
		2.并行查询
	6.特殊表
		-ROOT- 记录.META表的Region信息,只有一个region
		.META  记录用户表的Region信息,可以有多个region
	7.查询请求过程
		zookeeper->-ROOT- ->.META -> 最终位置
	8.安装
		1.解压安装包
		2.添加HBase环境变量 /etc/profile
		3.修改配置文件
			hbase-env.sh
			hbase-site.xml
		4.启动
			启动前需保证已经启动hadoop
		5.验证
			jps查看进程 分别是HMaster/HRegionServer/HQuorumPeer
			web:   hadoop:60010
	9.shell使用
		1.创建表  create
		2.添加记录 put
		3.查看记录 get
		4.删除记录 delete
		5.更改记录 重写覆盖
		6.查询记录总数 count
		7.删除表 先disable 再drop
		8.查看表结构 desc 
	10.javaAPI
		1.导入jar包
		2.得到Configuration对象
		3.创建表/删除表使用HBaseAdmin对象
		4.插入记录、查询记录使用HTable对象
	11.	HDFS数据导入HBase	
	
2.Hive————SQL to MR
	1.简介
		hive是一个sql解析引擎,可以把sql查询转换成mr中的job来运行
	2.安装
		1.解压安装包
		2.配置hive环境变量 /etc/profile
		3.修改配置文件
			hive-site.xml/hive-env.sh/hive-config.sh
		4.修改hadoop配置文件
			hadoop-env.sh
		5.拷贝mysql jdbc连接jar到lib目录下
	3.安装mysql(用于存储元信息)
	4.配置hive连接mysql(通过jdbc方式)
	5. 内部表
	   CREATE TABLE t1(id int);  
	   LOAD DATA LOCAL INPATH '/root/id' INTO TABLE t1; 
	   CREATE TABLE t2(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
	6. 分区表
	   CREATE TABLE t3(id int) PARTITIONED BY (day int);  
	   LOAD DATA LOCAL INPATH '/root/id' INTO TABLE t1 PARTITION (day=22);   
	7. 桶表
	   create table t4(id int) clustered by(id) into 4 buckets; 
	   set hive.enforce.bucketing = true;
	   insert into table t4 select id from t3;
	8. 外部表
	   create external table t5(id int) location '/external';  
	9.UDF————用于自定义函数
		1.继承org.apache.hadoop.hive.ql.UDF
		2.实现evaluate函数,evaluate函数支持重载
		3.注:UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF
		
	
3.Pig————PLain to MR
	1.安装
		1.解压安装包
		2.配置pig环境变量 /etc/profile
		3.修改配置文件——pig.properties
		4.即可使用,具体使用详情可度娘(重点不在这,在Hive)

4.Zookeeper————集群资源管理和保证节点数据的事务性、完整性
	4.1 leader  负责进行投票的发起和决议,更新系统状态
	4.2 learner	 包括follower和observer
			其中:
					follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票
					observer用于接受客户端连接,将写请求转发给leader,但其不参加投票过程,只同步leader的状态
	4.3 client	请求发起方	
	
5.Mahout————基于MR开发的数据挖掘和机器学习库	
	5.1 聚类算法
		将类似的对象划分成多个类的算法
			以k-means算法为例
				思想:
					a.给定聚类个数K
					b.按照数据特征,将其分为k个类别
				步骤:
					1.提取feadture
					2.将feadture向量化
					3.利用K-means算法实现聚类
	5.2 分类算法
		有监督机器学习算法,需提供样本,根据样本得到分类模型
			步骤:
				1.训练样本,得到分类模型
				2.对分类模型进行测试,并尝试调优
				3.将分类模型用于线上产品中
	5.3 推荐算法

6.Flume————分布式日志收集框架
	1.agent是一个java进程,运行在日志收集节点
		a.source组件是专用于收集日志文件,收集数据后临时存放在channel中
		b.channel组件是用于临时存储数据
		c.sink组件是用于把数据发送到目的地的
		d.event组件是数据传输中的数据流
	2.安装
		1.解压包
		2.配置环境变量 /etc/profile
		3.修改配置文件
			配置source1
			配置channel1
			配置sink1
			详情参考配置文件模板
		3.运行flume-ng.sh
7.sqoop————对数据进行导入导出
	1.安装
		1.解压包
		2.配置环境变量 /etc/profile
		3.修改配置文件
			sqoop-env.sh/sqoop-site.xml
		4.拷贝mysql jdbc连接jar到lib目录下
	2.使用		
		1.从mysql->hdfs中(默认导出路径是hdfs根目录下/user/root(当前登陆用户)中)
			sqoop import --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password root --table t_test --fields-terminated-by '\t' --null-string '**'	
				--connect  关系型数据库连接url
				--username  用户名
				--password	密码
				--table		表名
				--fields-terminated-by	导出时字段分隔符
				--null-string			导出时字段为空替换符(如果不设置这项,若字段为空,会报错)		
		2.从hdfs->mysql中(默认导出路径是hdfs根目录下/user/root(当前登陆用户)中)
			sqoop export --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password root --table t_test --fields-terminated-by '\t' --export-dir 'ids'
				--export-dir 导入目录
		3.增量导入导出
			--check-column  检查列
			--last-value	最后存储的值
			--incremental append 增加方式
		4.添加任务————将常用的语句添加到任务
			sqoop job --create myjob -- export --connect "jdbc:mysql://hadoop:3306/test?useUnicode=true&characterEncoding=utf-8" --username hive --password hive --table stock_detail --fields-terminated-by '\t' --export-dir 'stock_detail'
		5.运行任务
			sqoop job --exec 任务名(注意配置免密码,不然需要输入mysql的密码,注意是mysql数据库用户密码而不是linux的)
		6.查看任务
			sqoop job --list
		6.删除任务
			sqoop job --delete
		7.设置免密码
			配置文件site.xml  
				sqoop.metastore.client.record.password 打开这项,默认是注释的
		8.事务处理
			以Mapper任务为单位
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

	

  

java编程学习网专注于java编程技术分享