前言
安装Hive实属后知后觉,是想使用Apache Atlas展示血缘关系,后来发现需要从Hive中导入元数据才能查看data lineage,故而初步了解Hive,了解Hive主要有三种模式(内嵌、本地和远程),选了本地模式,并使用mysql替代了默认的derby数据库。在参考网上的教程进行实操后出了一些bug,百度搜索后成功安装,现进行简单总结。
Hive是基于Hadoop上的数据仓库,面向主题、集成的、不可更新的,支持OLAP(On-Line Analytical Processing 联机分析处理。不会更新、删除、插入操作,数据都是历史数据)。
Hive的表其实就是HDFS的目录/文件,Hive表存在HDFS的目录上,Hive数据存在HDFS文件中。
安装模式:
- 内嵌模式:元数据信息被存储在Hive自带的Derby数据库中 ./hive,只允许创建一个连接,多用于Demo演示使用
- 本地模式:元数据信息被存储在MySQL数据库中,MySQL数据库与Hive运行在同一台物理机器上,多用于开发和测试
- 远程模式:Hive和MySQL运行在不同的物理机上
准备
- Hadoop集群
- mysql
- Hive安装包 http://archive.apache.org/dist/hive/自行搜索目标Hive版本tar包
- Hive相关知识了解 https://blog.csdn.net/qq_38586378/article/details/86640078
安装过程
1. Hadoop集群安装及配置
具体请参考https://blog.csdn.net/qq_38586378/article/details/81352358 中Hadoop集群的搭建
2. mysql安装
yum install mysql
service mysqld start
mysql -u username -p password
create database hivedb;
grant all privileges on hivedb.* to 'root'@'%' identified by 'root';
grant all privileges on hivedb.* to 'root'@'loalhost' identified by 'root';
grant all privileges on hivedb.* to 'root'@'主机名' identified by 'root';
flush privileges;
安装mysql->启动mysql->创建hivedb数据库->给hivedb授权 需要注意的是第一次登录mysql密码为空,我设置的是username和password均为root
3. Hive安装
下载->解压配置环境变量->配置conf->启动hive 我是将hive解压到了/usr/local/src/hive下
3.1 环境变量配置 vi /etc/profile
export HIVE_HOME=/usr/local/src/hive
export HIVE_PATH=${HIVE_HOME}/bin
export PATH=${HIVE_PATH}:$PATH
使环境变量生效 source /etc/profile
3.2 配置conf
主要是conf中的hive-env.sh和hive-site.xml原本的conf中是没有这两个文件的,将所有结尾为template的去掉template后缀
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
3.2.1 hive-env.sh配置
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/src/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/src/hive/lib
3.2.2 hive-site.xml配置
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>the driver for JDBC connection</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master-01:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>the configuration for JDBC connection</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>the username for database hivedb</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>the password for database hivedb</description>
</property>
修改hive-site.xml中有关iotmp存储的位置和用户名的替换
因为其中有多处${system:java.io.tmpdir}和${system:username}所以直接加property对二者进行说明即可
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/src/hive/iotmp</value> //iotmp为自行mkdir的目录
</property>
<property>
<name>system:user.name</name>
<value>root</value>
</property>
3.3 mysql驱动jar包导入hive的lib中
具体jar包下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/
下载完毕后mv移动到hive对应的lib目录下即可
3.4 初始化Hive在mysql里的脚本
schematool -initSchema -dbType mysql
3.5 测试hive
bin/hive 不出错出现进入hive模式即为安装运行成功。
如果想要有web ui界面,需要下载hive 源码src包,进行编译,编译成功后可通过默认的端口9999查看
Bug汇总
开始有hadoop.hivexxx.jar包的bug的时候以为是安装模式的问题,后续试了内嵌模式还是同样的bug,最后发现是hadoop里的jline jar包版本太老了,所以就将hive/lib底下的jline jar包复制到hadoop/share/hadoop/yarn/lib下并rm掉原来的旧版本jar包,重新启动hive即成功。
总结
虽然很多安装网上都有很详细的教程,但是不思考一味地埋头仿照配置是不可取的,需要思考为啥这样配置,这样可以get到配置的某种思想(两个组件要交互,是要有conf底下的xml文件property配置和相应jar包等的导入),以及出现bug要学会查看log日志和error提示,根据提示百度或思考解决bug。
感觉进入大数据领域学习后,很多安装都是各组件的版本不匹配问题导致的bug,所以安装前一定要注意版本匹配问题(组件间的兼容性及使用的jar包版本相同)
在遇到bug时,一定要学会排查,对比教程查看自己操作的遗漏点,以及根据报错信息思考可能是哪块出错尝试解决,焦急发呆盲搜解决不了问题,冷静客观处理方会有好结果~