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

来源:互联网 发布:卖家怎么设置淘宝转运 编辑:程序博客网 时间:2024/06/03 14:38

主要参考博客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 -pCREATE 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_144export HIVE_HOME=/usr/local/hiveexport HADOOP_HOME=/usr/local/hadoop

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

  • 配置hive-config.sh文件
    在hive/bin下;
    其他地方不变,在最后添加:
export JAVA_HOME=/usr/local/jdk/jdk1.8.0/jdk1.8.0_144export HIVE_HOME=/usr/local/hiveexport 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#hiveexport HIVE_HOME=/usr/local/hiveexport PATH=$PATH:$HIVE_HOME/binsource /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 0