CentOS7基于Hadoop 2.7.3安装Hive 2.1.1

来源:互联网 发布:程序员年度工作总结 编辑:程序博客网 时间:2024/05/23 01:24

1.前言

说明:安装hive前提是要先安装hadoop集群,并且hive只需要再hadoop的namenode节点集群里安装即可(需要再所有namenode上安装),可以不在datanode节点的机器上安装。另外还需要说明的是,虽然修改配置文件并不需要你已经把hadoop跑起来,但是本文中用到了hadoop命令,在执行这些命令前你必须确保hadoop是在正常跑着的,而且启动hive的前提也是需要hadoop在正常跑着,所以建议你先将hadoop跑起来在按照本文操作。有关如何安装和启动hadoop集群,请参考: 
CentOS7.0下Hadoop 2.7.3集群搭建

2.下载安装Hive2.1.1

2.1.下载Hive 2.1.1

下载地址:http://hive.apache.org/downloads.html 
点击图中的Download a release now! 

按照步骤找到作一镜像,使用wget命令下载:

$wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
  • 1

2.2.安装hive 2.1.1

#解压:tar -zxvf apache-hive-2.1.1-bin.tar.gz#把解压后的文件移到目录/usr/local/下:mv apache-hive-2.1.1-bin /usr/local/apache-hive-2.1.1#配置hive环境变量vim /etc/profile--------------------------------------------------HIVE_HOME=/usr/local/apache-hive-2.1.1HIVE_CONF_DIR=$HIVE_HOME/confPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/binexport JAVA_HOME JRE_HOME PATH CLASSPATH HADOOP_HOME  HIVE_HOME HIVE_CONF_DIR-------------------------------------------------#使配置文件的修改生效source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.配置hive

3.1.配置hive-site.xml

#进入目录cd $HIVE_CONF_DIR#拷贝hive-default.xml.template并重命名为hive-site.xmlcp hive-default.xml.template  hive-site.xml#编辑hive-site.xmlvim hive-site.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.1.1 使用hadoop新建hdfs目录

因为在hive-site.xml中有这样的配置:

  <name>hive.metastore.warehouse.dir</name>  <value>/user/hive/warehouse</value>   <name>hive.exec.scratchdir</name>  <value>/tmp/hive</value>
  • 1
  • 2
  • 3
  • 4

所以要在Hadoop集群新建/user/hive/warehouse目录,执行命令

cd $HADOOP_HOME #进入Hadoop主目录bin/hadoop fs -mkdir -p  /user/hive/warehouse #创建目录bin/hadoop fs -chmod -R 777 /user/hive/warehouse #新建的目录赋予读写权限bin/hadoop fs -mkdir -p /tmp/hive/#新建/tmp/hive/目录bin/hadoop fs -chmod -R 777 /tmp/hive #目录赋予读写权限#用以下命令检查目录是否创建成功bin/hadoop fs -ls /user/hivebin/hadoop fs -ls /tmp/hive
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.1.2.修改hive-site.xml中的临时目录

将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,例如我替换为/usr/local/apache-hive-2.1.1/tmp/,该目录如果不存在则要自己手工创建,并且赋予读写权限。

cd $HIVE_HOMEmkdir tmpchmod -R 777 tmp/
  • 1
  • 2
  • 3

例如原来:

  <property>    <name>hive.downloaded.resources.dir</name><value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>    <description>Temporary local directory for added resources in the remote file system.</description>  </property>
  • 1
  • 2
  • 3
  • 4

替换为:

  <property>    <name>hive.downloaded.resources.dir</name>    <!--value>${system:java.io.tmpdir}/${hive.session.id}_resources</value-->    <value>/user/local/apache-hive-2.1.1/tmp/${hive.session.id}_resources</value>    <description>Temporary local directory for added resources in the remote file system.</description>  </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.1.3.将配置文件中${system:user.name}都替换为root

例如原来:

  <property>    <name>hive.server2.logging.operation.log.location</name><value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>  </property>
  • 1
  • 2
  • 3
  • 4

替换为:

  <property>    <name>hive.server2.logging.operation.log.location</name>    <value>/user/local/apache-hive-2.1.1/tmp/root/operation_logs</value>    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>  </property>
  • 1
  • 2
  • 3
  • 4
  • 5

说明: 以上给出的只是配置文件中截取了几处以作举例,你在替换时候要认真仔细的全部替换掉。

3.1.4.修改hive-site.xml数据库相关的配置

3.1.4.1. javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径:
<property  <name>javax.jdo.option.ConnectionDriverName</name  <value>com.mysql.jdbc.Driver</value></property>  
  • 1
  • 2
  • 3
  • 4
3.1.4.2. javax.jdo.option.ConnectionURL,将该name对应的value修改为MySQL的地址:
 <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.56.101:3306/hive?createDatabaseIfNotExist=true</value>
  • 1
  • 2
3.1.4.3.javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:
<name>javax.jdo.option.ConnectionUserName</name><value>root</value>
  • 1
  • 2
3.1.4.4.javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:
<name>javax.jdo.option.ConnectionPassword</name><value>*******</value>
  • 1
3.1.4.5.将MySQL驱动包上载到Hive的lib目录下
cp /home/dtadmin/spark_cluster/mysql-connector-java-5.1.36.jar $HIVE_HOME/lib/
  • 1

3.2.新建hive-env.sh文件并进行修改

cd $HIVE_CONF_DIRcp hive-env.sh.template hive-env.sh #基于模板创建hive-env.shvim hive-env.sh #编辑配置文件并加入以下配置:-------------------------------------------------export HADOOP_HOME=/home/hadoop/hadoop-2.7.3export HIVE_CONF_DIR=/usr/local/apache-hive-2.1.1/confexport HIVE_AUX_JARS_PATH=/usr/local/apache-hive-2.1.1/lib--------------------------------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.启动和测试

有关安装与配置MySQL数据库请参考文章:CentOS7.0安装配置MySQL5.7

4.1.对MySQL数据库初始化

#进入到hive的bin目录cd $HIVE_HOME/bin#对数据库进行初始化schematool -initSchema -dbType mysql
  • 1
  • 2
  • 3
  • 4

执行成功后,在mysql的hive数据库里已生成metadata数据表: 
这里写图片描述

4.2.启动Hive

cd $HIVE_HOME/bin #进入Hive的bin目录./hive #执行hive启动
  • 1
  • 2

4.3.测试Hive

4.3.1.简单测试

成功启动Hive后,会进入hive的命令行模式,下面进行一系列简单测试:

hive> show functions;OK-----!!=$sum0%&*+-/<<=<=><>===>>=^absacosadd_monthsaes_decryptaes_encryptandarrayarray_containsasciiasinassert_trueatanavgbase64betweenbinbroundcasecbrtceilceilingchrcoalescecollect_listcollect_setcompute_statsconcat...hive> desc function sum;OK----sum(x) - Returns the sum of a set of numbersTime taken: 0.007 seconds, Fetched: 1 row(s)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

4.3.2.执行新建库、表以及导入数据的测试

执行新建数据库的hive命令: 
hive>create database starbucks; 
hive>use starbucks; 
hive> create table sbux_nc_req


request_id bigint, 
message_type_id int, 
request_type int, 
request_time string, 
request_url string, 
request_source int, 
request_body string, 
response_time string, 
send_time string, 
attachment_id int, 
template_id bigint, 
linked_template_id string, 
linked_job_id bigint, 
application_id int, 
created_by string, 
creation_date string, 
last_updated_by string, 
last_updated_date string 
) row format delimited fields terminated by ‘\t\t\t’; 
hive> load data local inpath ‘/var/lib/mysql-files/sbux_nc_req.dat’ into table sbux_nc_req; 
注:sbux_nc_req.dat文件可能在mysql数据库里生成,生成方法如下:

select * into outfile '/var/lib/mysql-files/sbux_nc_req.dat'        fields terminated  by '\t\t\t' from sbux_nc_req; 
  • 1

4.3.3.查看是否成功

hive> select * from sbux_nc_req; 
这里写图片描述

4.3.4.在Hadoop的HDFS页面上查看

这里写图片描述

4.3.5.在MySQL的hive数据库中查看

这里写图片描述

原创粉丝点击