一、背景
系统:CentOS7 Linux 64位
目的:在Hadoop系统上安装Hive,终结Hive安装乱象
版本:apache-hive-1.2.2-bin.tar.gz
路径:/opt #放置到Linux的/opt/路径下,若更改路径,下方相关配置也需要更改!!!
排版:简单
二、Hive 介绍
Hive 是构架在 hadoop 之上的 数据仓库工具,提供简单的 sql 查询功能,被称为HiveQL 或 HQL,然后将 sql 语句转换为 MapReduce 任务进行运行,来处理结构化数据
优点:
1)操作接口采用类SQL语法,容易上手
2)避免了用 Java 写 MapReduce,降低开发人员的学习成本;通过SQL可轻松访问数据,从而实现数据仓库任务,如提取-转换-加载(ETL),报告和数据分析
3)统一的元数据管理,可与 impala/spark 等共享元数据
4)数据的离线处理,如日志分析,海量结构化数据离线分析
缺点:
1)Hive执行延迟比较高,因此 hive 常用于数据分析的,不适合实时性要求高的场景
2)因为Hive的执行延迟比较高,对于处理小数据没有优势,适合处理大数据
三、准备工作
1. 检查Java JDK 是否安装
输入 ** java -version**
若显示以上信息,则说明有安装;若没有安装,先进行 jdk 的安装
Java JDK 下载和安装过程链接文章的步骤3:原创|Linux|CentOS|Inst Hadoop
2. 检查 Hadoop 是否安装
输入 ** hadoop version**
若没有安装hadoop,则安装以下步骤进行 hadoop 的下载和部署: 原创|Linux|CentOS|Inst Hadoop
3. 检查 Mysql 是否安装
输入 **find / -name 'mysql' **
安装Mysql链接:原创|Linux|Inst Mysql
4.安装vim
yum -y install vim
三、Hive下载
1. 官网下载 Hive
Hive官网链接:http://hive.apache.org/downloads.html
step1:在DOWNLOADS下点击 Download a release now! 进入
imagestep2:在 HTTP 下可看到多个下载 Hive 的链接,选择一个进入
imagestep3:点击需要下载的版本,进入
imagestep4:选择 apache-hive-bin.tac.gz 下载到本地
image注:
xx-bin.tac.gz 是 class 文件,java 已编译过
xx-src.tac.gz 是 java 文件,是 java源代码
.tac.gz 是 linux 下的安装包
2. 将本地下载的 Hive 安装包上传到 Linux 上
通过 Xshell 的Xftp软件上传文件
将文件上传到 /opt/ 目录下
四、Hive 安装
1. 安装Hive
step1:进入到opt目录
cd /opt
step2:解压 hive 安装包到 hive目录下
tar -zxf /opt/apache-hive-1.2.2-bin.tar.gz
mv apache-hive-1.2.2-bin hive #重命名文件夹
将存放在 /opt/目录下的安装包 apache-hive-1.2.2-bin.tar.gz 解压到 当前目录下
2. 加载 mysql 驱动包
链接:mysql-connector-java驱动包下载地址
step3: 下载 mysql 驱动包后,放入到 hive安装目录的 lib 目录下
cd /hive/lib #进入到 lib 目录
rz
弹出一个文件选择窗口,从本地选择mysql 驱动包上传到服务器
上传完毕后,可在 lib 目录下,看到上传的 mysql-connector-java-8.0.15.jar包
3. 配置 Hive 环境变量
step4:进入 /etc/profile 文件,配置环境变量
sudo vim /etc/profile #进入到 profile 配置文件
输入 i 键 进入编辑模式
输入 export HIVE_HOME=/opt/hive
export PATH=HIVE_HOME/conf
/opt/hive 是hive目录路径
输入 Esc 键,输入 **:wq ** 保存并退出
step5:重新执行 profile 文件
输入 source /etc/profile 刷新配置,生效配置
4. 修改 Hive 的 hive-env.sh 、hive-site.xml 和 hive-log4j2.properties 配置文件
step6:进入到 hive安装目录的 /conf 目录下
cd /opt/hive/conf
问题一:/conf 目录下木有hive-env.sh 、 hive-site.xml 和 hive-log4j2.properties,但是看到 hive-env.sh.template 、 hive-default.xml.template 和 hive-log4j2.properties.template 文件
解决方法:可直接复制,并分别重命名为 hive-env.sh 、 hive-site.xml 和 hive-log4j2.properties
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
step7:修改 hive-env.sh 文件
vim hive-env.sh #编辑 hive-env.sh文件
输入 i 键 进入编辑模式
末尾输入(可在 /etc/profile查询,适当修改得到如下信息)
#hadoop_home路径
HADOOP_HOME=/opt/hadoop-3.1.2
#hive配置文件存放路径
export HIVE_CONF_DIR=/opt/hive/conf
#hive相关jar存放路径
export HIVE_AUX_JARS_PATH=/opt/hive/lib
分别添加你安装的 java jdk 路径、hadoop路径和hive路径
输入 Esc 键,输入 :wq 保存并退出
输入 **source hive-env.sh ** 重新执行 hive-env.sh 文件使其生效
step8:在修改 hive-site.xml 前,先创建warehouse、tmp、log目录
cd /opt/hive
mkdir warehouse #存储表数据
mkdir tmp # 存储临时文件
mkdir log # 存储日志文件
step9:修改 hive-site.xml 文件
cd /opt/hive/conf #进入到 conf 目录下
vim hive-site.xml #编辑 hive-site.xml 文件
输入 i 键 进入编辑模式
1)首先添加以下信息,配置 mysql 数据库相关内容(在末尾</configuration>之前)
> <property>
>
> <name>javax.jdo.option.ConnectionURL</name>
>
> <value>jdbc:mysql://localhost:3306/test?3useUnicode=true;characterEncoding=utf8;
>
> </value>
>
> <description>JDBC connect string for a JDBC metastore</description>
>
> </property>
>
> <property>
>
> <name>javax.jdo.option.ConnectionDriverName</name>
>
> <value>com.mysql.cj.jdbc.Driver</value>
>
> <description>Driver class name for a JDBC metastore</description>
>
> </property>
>
> <property>
>
> <name>javax.jdo.option.ConnectionUserName</name>
>
> <value>root</value>
>
> <description>username to use against metastore database</description>
>
> </property>
>
> <property>
>
> <name>javax.jdo.option.ConnectionPassword</name>
>
> <value>mysql数据库登录密码(需要修改成密码)</value>
>
> <description>password to use against metastore database</description>
>
> </property>
2)修改 hive.metastore.warehouse.dir 配置
搜索hive.metastore.warehouse.dir
先按 Esc 键退出编辑模式,然后输入** /hive.metastore.warehouse.dir**
定位到 hive.metastore.warehouse.dir 位置,按 i 键进入编辑
修改 value 值,填写你所创建的 warehouse 的路径,配置数据目录
3)修改 hive.exec.scratchdir 配置
按 2)的修改步骤,修改临时文件路径
4)修改 hive.querylog.location 配置
按 2)修改步骤,修改日志路径
5)修改 system:java.io.tmpdir 的路径
搜索 system:java.io.tmpdir ,定位到多处含有 system:java.io.tmpdir 的地方(搜索功能按小写 n可切换到下一处;按大写 N 可切换到上一处)
全部替换成 /opt/hive/tmp(这个是我存放临时文件的路径,替换成你所创建的)
修改完以上全部内容后,输入 Esc 键,输入 **:wq ** 保存并退出
**6)删除;异常值
Esc /  定位到; 删除即可,注意有;号。
step10:修改 hive-log4j.proprties 文件
输入 ** vim hive-log4j2.properties**
修改 log.dir 属性,配置存放log文件路径,其他属性默认即可
hive.log.dir=/opt/hive/log/${username}
step11:在hdfs中创建文件并授权
hive中存储的数据和产生的临时文件需要存储在hdfs中,因此需要再hdfs中创建相应文件
存放hive中具体数据目录
hadoop fs -mkdir /opt/hive/warehouse
存放hive运行产生的临时文件
hadoop fs -mkdir /opt/hive/tmp
存放hive日志文件
hadoop fs -mkdir /opt/hive/log
修改文件权限
hadoop fs -chmod -R 777 /opt/hive/warehouse
hadoop fs -chmod -R 777 /opt/hive/tmp
hadoop fs -chmod -R 777 /opt/hive/log
五、Hive 启动
step11: 启动 hadoop
cd
start-all.sh
jps #查看是否启动成功
step12: 启动 mysql
service mysql start #若不行,使用service mysqld start
若碰到问题:mysqld_safe A mysqld process already exists
参考方法:1、ps aux |grep mysqld 2、kill -9 [PID]
step13:初始化mysql数据库
schematool -initSchema -dbType mysql
若碰到问题,参考:https://jyao.iteye.com/blog/1915561
step14: 启动 hive
cd
hive
若碰到错误:
参考:
https://blog.csdn.net/chuyouyinghe/article/details/79134894
https://ask.hellobi.com/blog/tianshanbpf/14368
其他问题:
1、Failed with exception Java.io.IOException:java.lang.IllegalArgumentException: java.NET.URI
参考:https://blog.csdn.net/wodedipang_/article/details/72720257
2、hive INSERT OVERWRITE table could not be cleaned up.
参考:http://www.bubuko.com/infodetail-2290538.html
3、Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /opt/hive/tmp/root/1be8676a-56ac-47aa-ab1c-aa63b21ce1fc. Name node is in safe mode
参考:https://blog.csdn.net/qq_16018407/article/details/78914559
4、其他问题
参考:https://blog.csdn.net/sunnyyoona/article/details/51648871
https://blog.csdn.net/islotus/article/details/78357857
https://www.linuxidc.com/Linux/2015-01/111891.htm
六、文章参考
https://www.jianshu.com/p/44516adea1bc
https://blog.csdn.net/xiaoqiu_cr/article/details/80906955
网友评论