Ubuntu16.04下Hive安装「建议收藏」

Ubuntu16.04下Hive安装「建议收藏」由于Hive是构建在Hadoop之上的,所以在安装Hive之前,需要先安装好Hadoop环境。本教程使用Hive的本地模式进行安装,本地模式下Hive使用MySQL作为元数据库。一、安装MySQL1.安装MySQL1sudoapt-getinstallmysql-servermysql-client2.允许MySQL远程连接默认情况下,MySQL只允许本地登录,所以需要修改my.cn…

大家好,欢迎来到IT知识分享网。

由于Hive是构建在Hadoop之上的,所以在安装Hive之前,需要先安装好Hadoop环境。

本教程使用Hive的本地模式进行安装,本地模式下Hive使用MySQL作为元数据库。

一、安装MySQL

1. 安装MySQL

sudo apt-get install mysql-server mysql-client

IT知识分享网

2. 允许MySQL远程连接

默认情况下,MySQL只允许本地登录,所以需要修改my.cnf配置。

IT知识分享网sudo vi /etc/mysql/my.cnf
#bind-address=127.0.0.1

注释掉上一句即可在任意位置登录MySQL,然后重启MySQL:

sudo service mysql restart

3. 创建MySQL用户

IT知识分享网#登录MySQL
mysql -u root -p
create database hive;
grant all on hive.* to hive@'%' identified by 'hive';
grant all on hive.* to hive@'localhost' identified by 'hive';
flush privileges;
exit
#验证hive用户
mysql -u hive -p hive(密码是4和5所输入的hive)
show database;

二、安装Hive

1. 解压软件包

sudo tar -zxvf apache-hive-2.1.0-bin.tar.gz -C /opt/ #解压到/opt目录下
cd /opt
sudo mv apache-hive-2.1.0 hive	#重名名为hive
sudo chown -R hadoop:hadoop hive #修改hive目录拥有者

2. 配置Hive的环境变量

在 /etc/profile文件名末尾添加如下内容

# set hive
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

使profile生效:


source /etc/profile

 

3. 修改Hive配置文件

(1)修改hive-env.sh

cd /opt/hive/config
cp hive-env.sh.template hive-env.sh
sudo vi hive-env.sh

hive-env.sh文件末尾添加变量指向Hadoop的安装路径(自定义)

HADOOP_HOME=/opt/hadoop

(2)修改hive-site.xml

cp hive-default.xml.template hive-site.xml
sudo vi hive-site.xml

修改hive-site.xml的主要内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://master:9000/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatebaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</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.ConnectionPassword </name>
<value>hive</value>
</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.Multithreaded</name>
<value>true</value>
</property>
</configuration>

上面配置的说明:

  • hive.exec.scratchdir: 执行Hive操作访问HDFS时用于存储临时数据的目录,默认为/tmp/目录,通常设置为/tmp/hive/,目录权限设置为733.
  • hive.metastore.warehouse.dir: 执行Hive数据仓库操作的数据存储目录,设置为HDFS存储路径hdfs://master_hostname:port/hive/warehouse
  • javax.jdo.option.ConnectionURL: 设置Hive通过JDBC模式连接MySQL数据库存储metastore内容。

创建上述配置中的目录:


hdfs dfs -mkdir /tmp/hive
hdfs dfs -mkdir -p /hive/warehouse
#分别对刚创建的目录添加组可写权限,允许同组用户进行数据分析操作
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /hive/warehouse


hdfs dfs -mkdir -p /hive/warehouse会报错,原因是没有权限,此时加上sudo 来执行该命令,接着又报JAVA_HOME 没有设置的错误(事实上,JAVA_HOME变量是有值的),此时需要将hadoop-env.sh中的JAVA_HOME相对路径设置成绝对路径:把export JAVA_HOME=${JAVA_HOME}改成绝对路径就好了。

4. 添加MySQL JDBC驱动

下载MySQL JDBC驱动,要勾选Platform Independent,下载后解压到$HIVE_HOME/lib目录下。

经过上述Hive的基本安装和配置步骤后,在Linux命令提示符下输入hive命令即可进入Hive Shell交互模式环境中进行Hive相关的操作。

如果执行hive命令出现如下错误:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-2.3.3.jar!/hive-log4j2.properties Async: true
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
	at org.apache.hadoop.fs.Path.initialize(Path.java:254)
	at org.apache.hadoop.fs.Path.<init>(Path.java:212)
	at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:659)
	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:582)
	at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:549)
	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
	at java.net.URI.checkPath(URI.java:1823)
	at java.net.URI.<init>(URI.java:745)
	at org.apache.hadoop.fs.Path.initialize(Path.java:251)
	... 12 more

则需要修改hive-site.xml的几个地方:

<property>
    <name>hive.querylog.location</name>
    <value>$HIVE_HOME/iotmp</value>
    <description>Location of Hive run time structured log file</description>
  </property>

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>$HIVE_HOME/iotmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>$HIVE_HOME/iotmp</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

里面的$HIVE_HOME要用绝对路径来取代。

改完后再次执行hive命令,可能还会遇到权限问题,此时需要将/opt/hive权限设置成777

至此,hive安装配置成功

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6169.html

(0)
上一篇 2022-12-17 21:10
下一篇 2022-12-17 21:30

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信