大数据第三天
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任务为单位