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