1 hadoop 的mapreduce是分布式的计算框架
2 由于hive是把sql翻译成mapreduce任务,那么
1 解释器(解析sql),编译器(sql编译成mapreduce任务),优化器(优化完成后提交hadoop集群,job tracker)--》hive Driver
3 注意 hive只是针对类似表结构的数据
如果源数据格式杂乱,则需要先mapreduce转换
4 表: 元数据 和 数据
元数据:存在单独的关系型数据库里 metastore
数据:一行行数据。存在hadoop集群的数据存在hdfs
5 hive在编译时,会hive转换成 QL操作符(最小单元,一个个Operator操作符),每一个QL 代表一个mapreduce作业或对HDFS的一个操作
6 hive难点:对词法语法的分析。词法语法分析工具 antlr (hql)
7 3中安装或启动模式,按照元数据存储来区分
1 本地derby模式,默认derty数据库(hive自带),一般测试时用
2 本地mysql
3 远程mysql多用户模式。jdbc 连接远程数据库.由于会并发,所以hive在中间启了一个 hive server(MetaStoreServer) 来统一管理
8 hive主要用来解析sql的,单个机器就可以搞定,用不到集群。主要能连接上hadoop集群可以上传数据就行。也没必要做高可用
9
hive的本地derby安装
hive安装在hadoop-node1上
1 保证hadoop下 /home/hadoop-2.5.1/share/hadoop/yarn/lib 下 jline-2.12.jar版本替换为相同的最高版本
4台都要换,把低版本删
2 conf下
hadoop dfsadmin -safemode leave 强制离开安全模式
hadoop fs -rmr /user/hive/warehouse 删除hdfs上目录
hive的本地mysql安装
mysql安装在hadoop-node4上
hive安装在hadoop-node1上
mysql 配置文件 /etc/my.cnf 查看数据目录地址
远端mysql 多用户安装
mysql安装在hadoop-node4上
hive安装在hadoop-node1上
服务启动后,修改hadoop-node1 hive的配置(hive变为hadoop-node2 hive服务的客户端)
启动mysql(hadoop-node4)
启动启动hive元数据服务(hadoop-node2)
启动hive(hadoop-node1)
10 hive存在hdfs上是 文本格式
11 DML
在hive里 表里内容都是文本,不存在主键等,可以建
CREATE TABLE person1
(userid INT,name STRING,age INT,fav ARRAY<STRING>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
STORED AS TEXTFILE;
person1和person2 是组合表,无法用 truncate来清空
例如 从 a表查出一部分数据再从B表查出一部分数据做关联join,再插入一张新表里,
hive里有很多函数,我们可以任意转换我们查询到的数据
随便写个sql就可以转换成mapreduce,工作量大大减轻
insert update 很少用,因为数据量大,少几条数据不影响,没必要插入1条数据来跑reduce任务
12 hive分区
旧数据和新区分开
数据量大了我们可以每个月或每年做个分区,mapreduce中的padition分区,也是这个意思
13 hive函数 和 自定义函数 UDF
show functions; 符号也是一个函数
UDF多进出一 聚合函数 UDAF 多条出一条 UDTF 一条出多条
14 hive 嵌入 python
15的UDF 自定义函数过程非常复杂---》hive调用pytion
2 由于hive是把sql翻译成mapreduce任务,那么
1 解释器(解析sql),编译器(sql编译成mapreduce任务),优化器(优化完成后提交hadoop集群,job tracker)--》hive Driver
3 注意 hive只是针对类似表结构的数据
如果源数据格式杂乱,则需要先mapreduce转换
4 表: 元数据 和 数据
元数据:存在单独的关系型数据库里 metastore
数据:一行行数据。存在hadoop集群的数据存在hdfs
5 hive在编译时,会hive转换成 QL操作符(最小单元,一个个Operator操作符),每一个QL 代表一个mapreduce作业或对HDFS的一个操作
6 hive难点:对词法语法的分析。词法语法分析工具 antlr (hql)
7 3中安装或启动模式,按照元数据存储来区分
1 本地derby模式,默认derty数据库(hive自带),一般测试时用
2 本地mysql
3 远程mysql多用户模式。jdbc 连接远程数据库.由于会并发,所以hive在中间启了一个 hive server(MetaStoreServer) 来统一管理
8 hive主要用来解析sql的,单个机器就可以搞定,用不到集群。主要能连接上hadoop集群可以上传数据就行。也没必要做高可用
9
hive的本地derby安装
hive安装在hadoop-node1上
1 保证hadoop下 /home/hadoop-2.5.1/share/hadoop/yarn/lib 下 jline-2.12.jar版本替换为相同的最高版本
4台都要换,把低版本删
2 conf下
hadoop dfsadmin -safemode leave 强制离开安全模式
hadoop fs -rmr /user/hive/warehouse 删除hdfs上目录
hive的本地mysql安装
mysql安装在hadoop-node4上
hive安装在hadoop-node1上
mysql 配置文件 /etc/my.cnf 查看数据目录地址
远端mysql 多用户安装
mysql安装在hadoop-node4上
hive安装在hadoop-node1上
服务启动后,修改hadoop-node1 hive的配置(hive变为hadoop-node2 hive服务的客户端)
启动mysql(hadoop-node4)
启动启动hive元数据服务(hadoop-node2)
启动hive(hadoop-node1)
10 hive存在hdfs上是 文本格式
11 DML
在hive里 表里内容都是文本,不存在主键等,可以建
CREATE TABLE person1
(userid INT,name STRING,age INT,fav ARRAY<STRING>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
STORED AS TEXTFILE;
person1和person2 是组合表,无法用 truncate来清空
例如 从 a表查出一部分数据再从B表查出一部分数据做关联join,再插入一张新表里,
hive里有很多函数,我们可以任意转换我们查询到的数据
随便写个sql就可以转换成mapreduce,工作量大大减轻
insert update 很少用,因为数据量大,少几条数据不影响,没必要插入1条数据来跑reduce任务
12 hive分区
旧数据和新区分开
数据量大了我们可以每个月或每年做个分区,mapreduce中的padition分区,也是这个意思
13 hive函数 和 自定义函数 UDF
show functions; 符号也是一个函数
UDF多进出一 聚合函数 UDAF 多条出一条 UDTF 一条出多条
14 hive 嵌入 python
15的UDF 自定义函数过程非常复杂---》hive调用pytion