原创|Linux|CentOS|Hive|安装详解

一、背景

系统: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! 进入

原创|Linux|CentOS|Hive|安装详解_第1张图片
image

step2:在 HTTP 下可看到多个下载 Hive 的链接,选择一个进入

原创|Linux|CentOS|Hive|安装详解_第2张图片
image

step3:点击需要下载的版本,进入

原创|Linux|CentOS|Hive|安装详解_第3张图片
image

step4:选择 apache-hive-bin.tac.gz 下载到本地

原创|Linux|CentOS|Hive|安装详解_第4张图片
image

注:

xx-bin.tac.gz 是 class 文件,java 已编译过

xx-src.tac.gz 是 java 文件,是 java源代码

.tac.gz 是 linux 下的安装包

2. 将本地下载的 Hive 安装包上传到 Linux 上

通过 Xshell 的Xftp软件上传文件

将文件上传到 /opt/ 目录下


原创|Linux|CentOS|Hive|安装详解_第5张图片

四、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 驱动包上传到服务器

原创|Linux|CentOS|Hive|安装详解_第6张图片

上传完毕后,可在 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目录路径

原创|Linux|CentOS|Hive|安装详解_第7张图片

输入 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 数据库相关内容(在末尾之前)

> 
> 
>     javax.jdo.option.ConnectionURL
> 
>     jdbc:mysql://localhost:3306/test?3useUnicode=true;characterEncoding=utf8;
> 
>     
> 
>     JDBC connect string for a JDBC metastore
> 
> 
> 
> 
> 
>     javax.jdo.option.ConnectionDriverName
> 
>     com.mysql.cj.jdbc.Driver
> 
>     Driver class name for a JDBC metastore
> 
> 
> 
> 
> 
>     javax.jdo.option.ConnectionUserName
> 
>     root
> 
>     username to use against metastore database
> 
> 
> 
> 
> 
>     javax.jdo.option.ConnectionPassword
> 
>     mysql数据库登录密码(需要修改成密码)
> 
>     password to use against metastore database
> 
> 

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)的修改步骤,修改临时文件路径

原创|Linux|CentOS|Hive|安装详解_第8张图片

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 -R -chmod 777 /opt/hive/warehouse
hadoop fs -R -chmod 777 /opt/hive/tmp
hadoop fs -R -chmod 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]


原创|Linux|CentOS|Hive|安装详解_第9张图片

step13:初始化mysql数据库

schematool -initSchema -dbType mysql

若碰到问题,参考:https://jyao.iteye.com/blog/1915561

step14: 启动 hive

cd
 
hive

问题1:遇到Class path contains multiple SLF4J bindings.该如何解决
方法:https://blog.csdn.net/chuyouyinghe/article/details/79134894
问题2:# [在Hadoop 中用 hive 命令启动时报错:expansion character (code 0x8 at [row,col,system-id]: ]
方法: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、failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
原因:namenode没有启动
方法:
1、hdfs namenode -format
2、stop-all.sh
3、start-all.sh

3、FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Unable to move source file:/opt/t_access_times.dat to destination hdfs://bigdata:9000/opt/hive/warehouse/hive.db/t_access/t_access_times.dat
原因:datenode没有启动
方法:1、hadoop fs -chmod 777 -R /opt/hive/warehouse
2、hadoop fs -chmod 777 -R /opt/t_access_times.dat
3、cd /opt/hadoop-3.1.2/etc/hadoop
4、vi hdfs-site.xml #增加如下信息

dfs.permissions.enabled
false

5、hdfs --daemon start datanode
6、vi hdfs-site.xml #查看dfs.datanode.data.dir和dfs.namenode.name.dir下version位置,若此处两位置相同,一定要更改成不同位置,要不启动不了datanode(这是我启动不了datanode原因!!)
7、将datanode/current下的VERSION中的clusterID复制到namenode/current下的VERSION中,覆盖掉原来的clusterID。
8、start-all.sh
9、若上法都无效,如下方法请慎重使用,我是通过如下方法解决了问题,但有关于数据安全,慎用。
10、stop-all.sh
11、删除dfs.namenode.name.dir/current的data和tmp文件夹
12、hdfs namenode -format
13、start-all.sh
14、可能碰到问题4,处理方法如下。

4、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
方法:hdfs dfsadmin -safemode leave

5、could not be cleaned up
参考:
1、第一次在create table 时没有加 STORED AS TEXTFILE 结果 INSERT OVERWRITE table 命令就只能执行一次,后面就报错。
2、DROP TABLE xxx,重新建立新表。

6、MySQL无法重启报错Warning: World-writable config file ‘/opt/mysql/my.cnf ’ is ignored的解决方法
方法:chmod 644 /opt/mysql/my.cnf #mysql/my.cnf位置

7、WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.错误。

解决方案,在 vim sbin/stop-dfs.sh 将

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
改为
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

8、其他问题
参考:https://blog.csdn.net/sunnyyoona/article/details/51648871

六、文章参考

https://www.jianshu.com/p/44516adea1bc
https://blog.csdn.net/xiaoqiu_cr/article/details/80906955

你可能感兴趣的:(原创|Linux|CentOS|Hive|安装详解)