一、Hive架构
Hive 架构图其中:
-
client连接Hive的三种方式:
- CLI:Hive自带的shell;
- JDBC/ODBC:比如Beeline;
- Web UI:Hive的Web界面。
关于三种连接方式详解可以参考博客:https://www.cnblogs.com/qingyunzong/p/8715925.html#_label2。
-
metastore:metadata可以存储在三种metastore中,包括:内嵌式元存储(即Derby)、本地元存储(最常见的MYSQL)、远程元存储(最常见的MYSQ)。
-
数据存储:业务数据存储在HDFS中(外部表)或者Hive中(Hive内部表可以配置hive.metastore.warehouse.dir);
-
计算引擎:MapReduce;
注:图中的HDFS是1.X版本的。
二、安装并配置MYSQL作为metastore
2.1 安装Hive
简单来说官网下载hive安装包,配置环境变量即可。
2.2 增加配置项到hdfs-site.xml等配置文件中
必须在hdfs-site.xml中添加如下配置,否则hadoop会自动在/Users/ycaha/tmp目录下创建name等目录,这样的结果就是机器重启后自动删除,从而导致重启机器后namenode因为找不到NameNode路径而无法启动。
<property>
<name>dfs.namenode.name.dir</name>
<value>/Users/ycaha/software-package-install/hadoop_install/namenode_name_dir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/Users/ycaha/software-package-install/hadoop_install/datanode_data_dir</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>127.0.0.1:9001</value>
</property>
还需要在core-site.xml中设置ha.zookeeper.quorum 和 hive.zookeeper.quorum:
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>s104:2181,s106:2181,s108:2181</value>
</property>
</configuration>
之后必须要对HDFS的NameNode重新格式化:
hadoop namenode format
2.3 配置MYSQL
在mysql数据库中新建名为mysql的数据库,设置用户名密码均为hive(也可以是其他的)。
- 在mysql中创建名为hive的数据库;
- 登陆mysql:执行mysql -uroot -proot
- 创建新数据库: mysql> create database hive;
- 创建新用户:mysql> create user 'hive'@'%' IDENTIFIED BY 'hive';
- 授权hive用户的权限(允许访问数据库hive中的所有表):mysql> GRANT all ON hive.* TO hive@'%' IDENTIFIED BY 'hive';
- 立即启用修改:mysql> flush privileges;
另附其他一些常用操作:
revoke all on *.* from tester; --取消用户所有数据库(表)的所有权限 ;
delete from mysql.user where user='tester'; --删除用户 ;
drop database [数据库名称]; --删除数据库
2.4 在hive-site.xml中添加MYSQL的user、pass等信息
<!-- 插入一下代码 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>用户名(这4是新添加的,记住删除配置文件原有的哦!)
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>密码
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>mysql
<value>jdbc:mysql://127.0.0.1:3306/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>mysql驱动程序
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 到此结束代码 -->
三、运行hive并查看日志
运行hive shell并查看详细运行日志:
hive --hiveconf hive.root.logger=DEBUG,console
如有错误之处,敬请指正!
网友评论