实验目的
学会安装与配置Hive(前提是Hadoop已完成安装和配置)。
实验原理
如果Hadoop是完全分布式安装,那么Hive要在每一个节点上安装。
Hive需要存储metastore,metadata即元数据。元数据包含用Hive创建的database、tabel等的元信息。元数据存储在关系型数据库中。如Derby、MySQL等。
metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
Hive Metastore有三种配置方式,分别是:
(1)Embedded Metastore Database (Derby) 内嵌模式
(2)Local Metastore Server 本地元存储
(3)Remote Metastore Server 远程元存储
这三种配置方式的区别是:
内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境;
本地元存储和远程元存储都采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server.通常使用MySQL;
本地元存储和远程元存储的区别是:本地元存储不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。远程元存储需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程元存储的metastore服务和hive运行在不同的进程里。
本实验采取内嵌模式安装。
实验步骤
步骤1.检查Java环境是否安装。
#java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
步骤2.检查Hadoop环境是否安装。
#cd /usr/local/hadoop
#hadoop version
Hadoop 2.7.4
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4
步骤3.如果步骤1或2没完成,则按照《Hadoop基础实验》的实验一来完成,完成后继续步骤4.
步骤4.启动Hadoop。
#start-dfs.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
步骤5.下载Hive。
下载地址:http://mirrors.hust.edu.cn/apache/hive/hive-1.2.2/,得到apache-hive-1.2.2-bin.tar.gz
下载后将自动存入~/Downloads目录。
步骤6.安装hive
解压安装包
#sudo tar -zxf apache-hive-1.2.2-bin.tar.gz -C /usr/local
#cd /usr/local
#sudo mv apache-hive-1.2.2-bin hive
给安装用户赋权限,user为当前用户名
#sudo chown -R user hive
设置环境变量
#sudo edit ~/.bashrc
在打开的文件中添加以下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:/usr/local/Hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.
保存退出,生效环境变量
#source ~/.bashrc
步骤7.下载并安装Apache Derby。
此处,我们使用apache derby作为Hive的元数据库。
#cd ~
# wget http://archive.apache.org/dist/db/derby/db-derby-10.4.2.0/db-derby-10.4.2.0-bin.tar.gz
解压derby
#sudo tar -zxf db-derby-10.4.2.0-bin.tar.gz -C /usr/local
#cd /usr/local
#sudo mv db-derby-10.4.2.0-bin derby
#sudo chown -R user derby
配置环境变量
#sudo edit ~/.bashrc
在打开的文件中添加以下内容:
export DERBY_HOME=/usr/local/derby
export PATH=$PATH:$DERBY_HOME/bin
export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar
保存退出,生效环境变量
#source ~/.bashrc
创建文件以存储元数据
# mkdir $DERBY_HOME/data
步骤8.配置Hive。
配置hive-site.xml
#cd $HIVE_HOME/conf
#cp hive-default.xml.template hive-site.xml
因为Hive默认内嵌模式安装,其hive-site.xml默认derby的参数,我们不需更改。
配置hive-env.sh
#cp hive-env.sh.template hive-env.sh
#gedit hive-env.sh
在打开的文件中添加以下内容:
export HADOOP_HOME=/usr/local/hadoop
配置jpox.properties
#touch jpox.properties
# gedit jpox.peoperties
在打开的文件中添加以下内容:
javax.jdo.PersistenceManagerFactoryClass =
org.jpox.PersistenceManagerFactoryImpl
org.jpox.autoCreateSchema = false
org.jpox.validateTables = false
org.jpox.validateColumns = false
org.jpox.validateConstraints = false
org.jpox.storeManagerType = rdbms
org.jpox.autoCreateSchema = true
org.jpox.autoStartMechanismMode = checked
org.jpox.transactionIsolation = read_committed
javax.jdo.option.DetachAllOnCommit = true
javax.jdo.option.NontransactionalRead = true
javax.jdo.option.ConnectionDriverName = org.apache.derby.jdbc.ClientDriver
javax.jdo.option.ConnectionURL = jdbc:derby://localhost:1527/metastore_db;create = true
javax.jdo.option.ConnectionUserName = APP
javax.jdo.option.ConnectionPassword = mine
步骤9.在HDFS中配置hive的存取目录。
# $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
# $HADOOP_HOME/bin/hadoop fs -mkdir /user
# $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive
# $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
# $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
# $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
步骤10.启动Hive命令行,测试Hive。
# cd $HIVE_HOME
# bin/hive
hive>show tables;