Ubuntu16 Hive-2.3.4环境搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Waves___/article/details/85050807

一、前期准备

1.1 hadoop集群搭建。详见 Ubuntu16.04下搭建Hadoop分布式集群

1.2 mysql环境安装。详见 ubuntu彻底卸载mysql并且重新安装

1.3  mysql-connector-java-5.1.38.jar 驱动包。 mysql-connector-java-5.1.38.jar

1.4  hive安装包。https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ 
我下载的是2.3.4版本的,apache-hive-2.3.4-bin.tar.gz

二、hive安装

2.1 将apache-hive-2.3.4-bin.tar.gz解压于某一个位置,然后将文件夹的名字apache-hive-2.3.4-bin改名为hive方便后续操作,最终我解压后的位置为 home/waves/hive 。

然后将mysql-connector-java-5.1.38.jar驱动包放在 home/waves/hive/lib 目录下。

2.2 修改环境变量,在命令行输入 sudo gedit /etc/profile,添加HIVE_HOME:

添加完后,在命令行输入source /etc/profile 使立即生效

2.3 修改配置文件

2.3.1 开启hadoop集群(start.dfs.sh),创建 HDFS 目录并给它们赋相应的权限。在命令行依次输入以下指令:

扫描二维码关注公众号,回复: 6234663 查看本文章
hadoop fs -mkdir -p /usr/hive/warehouse
hadoop fs -mkdir -p /usr/hive/tmp
hadoop fs -mkdir -p /usr/hive/log
hdfs dfs -chmod -R 777 /usr/hive/warehouse
hdfs dfs -chmod -R 777 /usr/hive/tmp
hdfs dfs -chmod -R 777 /usr/hive/log

查看生成的文件夹:

2.3.2 将当前路径切换到 HIVE_HOME/conf 目录:

cd /home/waves/hive/conf

2.3.3 将hive-default.xml.template重命名为hive-default.xml

mv hive-default.xml.template hive-default.xml

新建一个配置文件hive-site.xml并编辑

gedit 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>/usr/hive/tmp</value>
		<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
	</property>
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/usr/hive/warehouse</value>
		<description>location of default database for the warehouse</description>
	</property>
	<property>
		<name>hive.querylog.location</name>
		<value>/usr/hive/log</value>
		<description>Location of Hive run time structured log file</description>
	</property>

	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</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.ConnectionUserName</name>
		<value>root</value>
		<description>username to use against metastore database</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>123123</value>
		<description>password to use against metastore database</description>
	</property>
</configuration>

其中前三项跟之前在HDFS建立的文件夹是对应的。最后的四项根据个人情况更改:

2.3.4 将hive-env.sh.template重命名为hive-env.sh

mv hive-env.sh.template hive-env.sh

修改hive-env.sh,在末尾添加:

# Hadoop的位置:
export HADOOP_HOME=/home/waves/hadoop-2.7
# hive的conf目录位置:
export HIVE_CONF_DIR=/home/waves/hive/conf
# hive的lib目录位置:
export HIVE_AUX_JARS_PATH=/home/waves/hive/lib

2.4 schematool 命令执行初始化操作

从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作,在命令行输入:

schematool -dbType mysql -initSchema

2.5 运行Hive

注意:在命令行运行 hive 命令时必须保证以下两点:

  1. HDFS 已经启动。可以使用 start-dfs.sh 来启动 HDFS。
  2. mysql-connector-java.jar 添加到 $HIVE_HOME/lib 目录下。

在schematool命令初始化成功后,在命令行直接输入hive运行:

2.6 hive测试

hive下的指令和mysql的一样。

三、遇到的问题

请大家在第2.3步骤修改配置文件时一定要跟着我的来,网上其他的乱七八糟的,搞出一大堆错。

弄的我最长时间的是下面这个错误

在执行命令schematool -initSchema -dbType mysql报错:

Metastore connection URL:     jdbc:derby:;databaseName=metastore_db;create=true
Metastore Connection Driver :     org.apache.derby.jdbc.EmbeddedDriver
Metastore connection User:     APP
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed stacktrace.
*** schemaTool failed *** 

原因就是因为在修改hive-site.xml文件时,有些网址的教程是直接将hive-default.xml.template重命名为hive-site.xml文件,然后直接在这个文件的基础上,在前面添加javax.jdo.option.ConnectionURL,javax.jdo.option.ConnectionDriverName等其他属性。

但原来的hive-default.xml.template文件其实已经包含了这些属性的了,你用ctrl+F搜索javax.jdo.option.ConnectionURL(或javax.jdo.option.ConnectionDriverName等其他的),不出意外的话,能搜索到两个以上同名的属性!!

解决方法就是按着上面的2.3步骤,将hive-default.xml.template重命名为hive-default.xml,然后新建hive-site.xml文件,将要添加的属性加进去就行了,详见2.3步。

参考:

https://my.oschina.net/jackieyeah/blog/735424

http://www.cnblogs.com/standingby/p/10039974.html

https://www.cnblogs.com/dxxblog/p/8193967.html

猜你喜欢

转载自blog.csdn.net/Waves___/article/details/85050807