ubuntu16.04配置hive2.1.1详解及相关问题解决

主要参考博客Ubuntu系统下安装并配置hive-2.1.0

mysql安装配置

  1. 安装mysql服务 ‘sudo apt-get install mysql-server mysql-client’
  2. 启动mysql服务 ‘sudo service mysql start’

    注释:
    重启mysql服务: ‘service mysql restart’
    停止mysql服务: ‘service mysql stop’
    查看mysql服务状态: ‘service mysql status’

  3. 进入mysql 服务
    3.1 创建hive用户

mysql -u root -p
CREATE USER  'hive'@'%'  IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON  *.* TO 'hive'@'%' WITH GRANT OPTION;
flush privileges;
use hive;
select user,host from mysql.user;
exit;

注释:
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; 创建用户hive,登录密码为hive;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION; 将所有权限赋给hive;
flush privileges; 刷新权限;
use hive;
select user,host from mysql.user;
exit; 查看信息;
在ubuntu系统里,默认情况下MySQL只允许本地登录,所以需要修改配置文件将地址绑定注释。
sudo gedit /etc/mysql/my.cnf
找到“# bind-address = 127.0.0.1“注释掉这一行就可以啦。 但是在我机器上并没有这句话,我也没注释掉。

3.2 重启mysql服务
sudo service mysql restart

3.3 建立Hive专用的元数据库,用我们刚创建的“hive“帐号登陆
mysql -u hive -p hive
CREATE DATABASE hive_metadata

hive安装配置

1. apache hive官网下载相关版本,解压到安装目录下
sudo tar -xvf apache-hive-2.1.1-bin.tar.gz /usr/local/hive

2. 配置hive-site.xml文件
在hive/conf目录下:
sudo cp hive-default.xml.template hive-site.xml

注释:
本来hive-site.xml是不存在的,需要从模版hive-default.xml.template拷贝使用。

需修改以下几个属性的值:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1:3306/hive_metadata?createDatabaseIfNotExist=true</value>  
    <description>
    JDBC connect string for a JDBC metastore.
    To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
    For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>  
</property>

...

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore
    </description>
</property>

...

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database
    </description>
</property>

...

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database
    </description>
</property>

注释:
- javax.jdo.option.ConnectionURL 这句话用于指定数据库所在服务器及端口和对应的数据库。因为我的机器是伪分布式,部署在一起的,所以指定为 jdbc:mysql://127.0.0.1:3306/hive_metadata
- javax.jdo.option.ConnectionDriverName 指定数据库驱动,原本是derby作为元数据库,这会带来麻烦,所以这几项用于更换元数据库为mysql;
- javax.jdo.option.ConnectionUserName & javax.jdo.option.ConnectionPassword 指定用户名和密码;

3. 配置hive-env.sh文件
在hive/conf下;
从模板文件hive-env.sh.template拷贝出来使用:
sudo cp hive-env.sh.template hive-env.sh
其他地方不变,在最后添加:

export JAVA_HOME=/usr/local/jdk/jdk1.8.0/jdk1.8.0_144
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop

注释:
有些教程上没有这一步,所以这一步应该不起作用。

  • 配置hive-config.sh文件
    在hive/bin下;
    其他地方不变,在最后添加:
export JAVA_HOME=/usr/local/jdk/jdk1.8.0/jdk1.8.0_144
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop

4. 拷贝jdbc驱动到hive/lib下
mysql官网下载mysql-connector驱动,拷贝到hive/lib下:
sudo cp mysql-connector-java-5.1.44.jar /usr/local/hive/lib

5. 配置环境变量

sudo gedit /etc/profile

#hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

出现问题

1. ${system:user.name} & ${system:tmpdir}错误
查阅博客hive配置遇到的问题( Relative path in absolute URI)以及【Hadoop】hive相关报错处理${system:java.io.tmpdir}等得知,错误元在system:user.name的配置,需要在hive-site.xml里面:
将{system:user.name}改为你的用户名,如hive;
同时也可以将iotmp的对应配置修改成真实地址/usr/local/hive/iotmp;
${system:java.io.tmpdir} 改为真实物理路径,如/usr/local/hive/tmp。
在hive下创建tmp,warehouse(以后用)文件夹,并赋权限770。
共有四个位置需要改。
最简单直接的修改方式:
在hive-site.xml文件中添加如下属性:

<property>
        <name>system:java.io.tmpdir</name>
        <value>/usr/local/hive/tmp</value>
</property>
<property>
        <name>system:user.name</name>
        <value>hive</value>
</property>

2. 在hive中输入show tables;时 ,报错:

WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

查阅博客Mysql报警告:WARN: Establishing SSL connection可知,是mysql-connector版本过高,而hive版本不支持高版本mysql-connector的SSL,换低版本驱动即可。

3. 在hive中输入show tables;时 ,报错:

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

原因:参考博客 Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient可知:Hive2需要hive元数据库初始化:
schematool -dbType mysql -initSchema

其他错误可查看博客Hive常见问题汇总

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值