環境
hadoop2.7.1+ubuntu 14.04
hive 2.0.1
叢集環境
namenode節點:master (hive服務端)
datanode 節點:slave1,slave2(hive用戶端)
hive建立在hadoop的HDFS上,搭建hive前,先需搭建hadoop
遠端模式:
101.201.81.34(Mysql server meta server安裝位置)
一、101.201.81.43
該主機上安裝好mysql,并且建立一個hive資料庫
(要開啟遠端通路)
二、在master上安裝hive
1.安裝hive
1)在apache官網上下載下傳hive-2.1.0包
2)
sudo tar -zxvf apache-hive-2.1.0-bin.tar.gz
3)
sudo cp -R apache-hive-2.1.0-bin /home/cms/hive
4)
chmod -R 775 /home/cms/hive
5)
sudo chown -R cms /home/cms/hive
2.修改/etc/profile加入HIVE_HOME的變量
HIVE_HOME/PATH/CLASSPATH
我粘貼的是我所有的配置
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_HOME=$HOME/hadoop-2.7.1
export HIVE_HOME=$HOME/hive
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$HIVE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$PATH
export HADOOP_MAPARED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile
3.修改hive/conf下的幾個template模闆并重命名為其他
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
配置hive-env.sh檔案,指定HADOOP_HOME安裝位置 HADOOP_HOME=$HADOOP_HOME/hadoop-2.7.1
4.修改hive-site.xml檔案,指定MySQL資料庫驅動、資料庫名、使用者名及密碼,修改的内容如下所示
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://101.201.81.34:3306/hive?createDatabaseIfNotExist=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.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
<description>password to use against metastore database</description>
</property>
<property>
其中:javax.jdo.option.ConnectionURL參數指定的是Hive連接配接資料庫的連接配接字元串;
javax.jdo.option.ConnectionDriverName參數指定的是驅動的類入口名稱;
javax.jdo.option.ConnectionUserName參數指定了資料庫的使用者名;javax.jdo.option.ConnectionPassword參數指定了資料庫的密碼。
5.緩存目錄的問題,如果不配置也會出錯的
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/hivetmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/hivetmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
并且需要對目錄進行權限設定mkdir -p /opt/hivetmp chmod -R 775 /opt/hivetmp
6.下載下傳mysql-connector-java-5.1.30-bin.jar檔案,并放到$HIVE_HOME/lib目錄下
可以從Mysql的官方網站下載下傳,但是記得一定要解壓呀,下載下傳的是一個tar.gz檔案,解壓後為jar檔案
7.hive表存儲在在HDFS中的/user/hive/warehouse中
三、slave2建立hive用戶端
1.将master上的整個hive目錄移至slave2上
scp -r hive slave2:/home/cms
注意要關閉防火牆
sudo ufw disable
2.修改slave2下的hive-site配置檔案,内容如下:
<configuration>
<!-- thrift://<host_name>:<port> 預設端口是9083 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
<description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<!-- hive表的預設存儲路徑 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://hive/warehouse</value>
</property>
</configuration>
修改/etc/profile,與master配置一緻
四、啟動
1.進入之前要初始化資料庫(master節點)
schematool -initSchema -dbType mysql
2.hive啟動
cms@master:~$ schematool -initSchema -dbType mysql
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in 1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Metastore connection URL: jdbc:mysql://101.201.81.34:3306/hive?createDatabaseIfNotExist=true
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: root
Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.mysql.sql
Initialization script completed
schemaTool completed```
2.hive啟動
要啟動metastore服務
在master上執行
hive --service metastore &
[cms@master ~]$ jps
10288 RunJar #多了一個程序
9365 NameNode
9670 SecondaryNameNode
11096 Jps
9944 NodeManager
9838 ResourceManager
9471 DataNod
3.測試hive shell(服務端,用戶端都可)
hive
show databases;
show tables;
檢視hive表
dfs -ls /user/hive/warehouse