Hive2.3.2安装和配置

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hive2.3.2安装和配置


一、下载hive
二、安装
1、配置环境变量
2、对Hive进行配置
3、使用hadoop新建hdfs目录
4、修改hive-site.xml中的临时目录
5、修改hive-site.xml数据库相关的配置
6、将MySQL驱动包上载到lib目录
7、新建hive-env.sh文件并进行修改
三、启动和测试
1、对MySQL数据库进行初始化
2、启动hive
3、测试
四、错误和解决


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


一、下载Hive

1、下载Hive
scp 10.32.35.100:/data/share/bigdata/apache-hive-2.3.2-bin.tar.gz /opt/
cd /opt/
tar -xzvf apache-hive-2.3.2-bin.tar.gz
mv apache-hive-2.3.2-bin hive


二、安装Hive

1、配置环境变量

编辑/etc/profile文件,增加hive相关的环境变量配置

export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export HIVE_HOME=/opt/hive
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export CLASS_PATH=.:${JAVA_HOME}/lib:${HIVE_HOME}/lib:$CLASS_PATH
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin:$PATH

刷新配置
source /etc/profile

2、对Hive进行配置

cd /opt/hive/conf/
cp hive-default.xml.template hive-site.xml

3、使用hadoop新建hdfs目录

因为在hive-site.xml中有这样的配置:
hive.metastore.warehouse.dir
/user/hive/warehouse

hive.exec.scratchdir
/tmp/hive

所以要让hadoop新建/user/hive/warehouse目录,执行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse

给刚才新建的目录赋予读写权限,执行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /user/hive/warehouse

让hadoop新建/tmp/hive/目录,执行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/

给刚才新建的目录赋予读写权限,执行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /tmp/hive/

检查hdfs目录是否创建成功
检查/user/hive/warehouse目录是否创建成功,执行命令:
$HADOOP_HOME/bin/hadoop fs -ls /user/hive/
检查/tmp/hive是否创建成功,执行命令:
$HADOOP_HOME/bin/hadoop fs -ls /tmp/

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

创建临时目录,并赋予读写权限
mkdir /opt/hive/tmp
chmod -R 777 /opt/hiv

e/tmp
vi /opt/hive/conf/hive-site.xml

将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,
替换为/opt/hive/tmp,替换时候要认真仔细的全部替换掉。

将hive-site.xml文件中的${system:}替换为${},
替换时候要认真仔细的全部替换掉。

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

搜索javax.jdo.option.ConnectionURL,将该name对应的value修改为MySQL的地址,例如我修改后是:
javax.jdo.option.ConnectionURL
jdbc:mysql://10.32.35.111:3306/hive?createDatabaseIfNotExist=true

搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径:

javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver


搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:
javax.jdo.option.ConnectionUserName
root

搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:
javax.jdo.option.ConnectionPassword
linux123

搜索hive.metastore.schema.verification,将对应的value修改为false:
hive.metastore.schema.verification
false

6、将MySQL驱动包上载到lib目录

将MySQL驱动包上载到Hive的/opt/hive/lib目录下
scp 10.32.35.100:/data/share/bigdata/mysql-connector-java-5.1.43.jar /opt/hive/lib

7、新建hive-env.sh文件并进行修改
cd /opt/hive/conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh

添加以下内容:
export HADOOP_HOME=/opt/hadoop
export HIVE_CONF_DIR=/opt/hive/conf
export HIVE_AUX_JARS_PATH=/opt/hive/lib


三、启动和测试

1、对MySQL数据库进行初始化

进入到hive的bin目录 执行命令:
cd /opt/hive/bin

对数据库进行初始化,执行命令:
schematool -initSchema -dbType mysql

2、启动hive

进入到hive的bin目录执行命令:
cd /opt/hive/bin
执行hive脚本进行启动,执行命令:
./hive

3、测试

show functions;

执行查看sum函数的详细信息的命令:
desc function sum;

新建数据库
create database db_hive_edu;

创建数据表
use db_hive_edu;
create table student(id int,name string) row format delimited fields terminated by '\t';

将文件数据写入表中
(1)在/opt/hive目录内新建一个文件
执行Linux命令(最好是重新打开一个终端来执行):
touch /opt/hive/student.txt

往文件中添加以下内容:
vi /opt/hive/student.txt

001 zhangsan
002 lisi
003 wangwu
004 zhaoliu
005 chenqi

说明:ID和name直接是TAB键,不是空格,因为在上面创建表的语句中用了terminated by '\t'
所以这个文本里id和name的分割必须是用TAB键(复制粘贴如果有问题,手动敲TAB键吧),还

有就是
行与行之间不能有空行,否则下面执行load,会把NULL存入表内,该文件要使用unix格式,如果是
在windows上用txt文本编辑器编辑后在上载到服务器上,需要用工具将windows格式转为unix格式,
例如可以使用Notepad++来转换。

完成上面的步骤后,在磁盘上/opt/hive/student.txt文件已经创建成功,文件中也已经有了内容,
在hive命令行中执行加载数据的hive命令:
load data local inpath '/opt/hive/student.txt' into table db_hive_edu.student;

查看是否写入成功
执行命令,查看是否把刚才文件中的数据写入成功,hive命令是:
select * from student;

说明:因为什么的操作使用use db_hive_edu;指定了数据库,所以这里直接用表名student,如果
没有指定数据库,请把这个语句换成
select * from db_hive_edu.student;

在界面上查看刚才写入hdfs的数据
我的hadoop的namenode的IP地址是10.32.35.131,所以我要在浏览器里访问如下地址:
http://10.32.35.131:50070/explorer.html#/user/hive/warehouse/db_hive_edu.db

点击上图的student,相当于是直接访问该地址:
http://10.32.35.131:50070/explorer.html#/user/hive/warehouse/db_hive_edu.db/student

点击student.txt,会弹出一个框

在MySQL的hive数据库中查看

在MySQL数据库中执行select语句,查看hive创建的表,SQL是:
select * from hive.TBLS;





错误和解决

警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决:
在log4j日志中去除告警信息。在/opt/hadoop/etc/hadoop/log4j.properties文件中添加
.apache.hadoop.util.NativeCodeLoader=ERROR

错误:Failed with exception java.io.IOException:ng.IllegalArgumentException: .URISyntaxException: Relative path in absolute URI: ${system:%7D
解决:
vi /opt/hive/conf/hive-site.xml
然后找到如下属性:

hive.exec.local.scratchdir
/opt/hive/tmp/${system:}
Local scratch space for Hive jobs

把它修改成如下:

hive.exec.local.scratchdir
/opt/hive/tmp/${}
Local scratch space for Hive jobs






相关文档
最新文档