Hive中文译为蜂巢。
在前面我们了解了mapreduce的核心思想:分而治之(分治)
SQL是一个相对来说易于学习的编程语言。
大数据未来发展发现:可视化和平台化
Hive简介
Hive数据存储在Hadoop上。Hive是数据仓库。可以读写大规模已经存储(离线)的数据。
因为为了满足非java编程者对hdfs的数据做MapReduce操作,hive产生了。
hive:数据仓库 底层使用MR框架。 数据库一般用于交互式查询,及时反馈,但是hadoop里mr耗时很长,满足不了。 数据仓库里的数据不允许修改,不允许删除。
hive:解释器,编译器,优化器等。
hive运行时,元数据存储在关系型数据库里面。

[注]matestore元数据
Hive架构
(1)用户接口有三个,CLI,Client和WUI。Cli启动时,会同时启动一个hive副本。client是hive的客户端,用户连接至Hive Server。在启动Client模式的时候,需要指出Hive Server所在的节点,并且在该节点启动Hive Server。WUI是通过浏览器访问Hive。
(2)hive将元数据存储在数据库中,如mysql,derby(内存数据库,hive自带)。hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)解释器,编译器,优化器完成HQL查询语句从词法分析,语法分析,编译,优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
(4)hive的数据存储在HDFS中,大部分的查询和计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapReduce任务)

-编译器将一个hive SQL转换为操作符
-操作符是hive的最小的处理单元
-每个操作符代表HDFS的一个操作或者一道MapReduce作业

hive搭建(3种)



安装hive
hive官网查看安装教程
http://hive.apache.org/
4种安装Linux软件方式:1.编译安装 2.rpm 3.yum 4.解压安装

注意这里要安装mysql-server,而不是mysql,mysql只代表安装客户端



分析授予权限语句
grant(授权) all privileges(所有权限) on .(表示所有库(第一个)所有表(第二个)) to 'root'@'%'(@%所有地址允许访问,远程可以访问) indentified by '123'(给密码) with grant option

因为%包含了以上,所以就可以删除了




以上就是启动集群
[注意]这里有个小技巧,比如我在node08和node09安装了resourcemanager,我在node09或08输入start-all.sh可以不用专门启动resourcemanage。但是还是要在备机node08或09执行yarn-daemon.sh start resourcemanager







在这里,要配置5个参数


关于这些代码现在在给出(官网上找的)
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property> //hdfs存储路径
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property> //是不是本地的metastore。[注意]removed as of hive0.10 就是后面删除了,如果你配了为空,就是本地模式。如果没配,就是远程模式。所以我在本文中并未配置相关参数。配上了没问题,只会报一些警告,说找不到相关参数
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true</value>
</property> //localhost改为node01
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property> //username 这里hive改为root
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
</configuration>


这里报错了,查看错误代码,没有驱动包,把原来下载的复制到该地点


这里发现第二个错误,查看错误代码,发现jline,查看jline版本







具体的文字版本无图方式请看我写的另一篇文章
hive的三种搭建方式概览
通过以上搭建行为,可能就有一个疑问,他是怎么搭建起来的,并未给与明确的指定?
答案是环境变量。

3.多用户模式
1.Remote一体
这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。
这里用mysql的测试服务器,ip位192.168.1.214,新建hive_remote数据库,字符集位latine1
这里来理一下思绪,我们所有的有4台服务器,node1,2,3,4.经过上面的配置,node1做mysql元数据,node2搭建了单节点。还有两台,一台做服务端(node3),一台做客户端(node4)。
注意服务端不是指的hive服务端,是元数据的服务端









修改的两个属性是(只修改了属性值):
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1/hive?createDatabaseIfNotExist=true</value>
</property>
客户端node4修改


<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.57.5:9083</value>
</property>

这是一个阻塞式窗口,就会卡着不动









网友评论