原创|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! 进入

image

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

image

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

image

step4:选择 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/bin:\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)删除&#8;异常值
Esc / &#8 定位到&#8; 删除即可,注意有;号。

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]


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 #增加如下信息
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
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/start-dfs.sh 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容