Hive搭建指南 環境CentOS7

這裏Hadoop的版本用的是 2.7.5
hive版本選擇的是 2.3.4
請看好與hadoop版本搭配的hive,官方目前繼續提供2.x和3.x的支持。
機器依然是hadoop的:

192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2

關於hadoop搭建請看:https://www.jianshu.com/p/25a0650b4a40https://www.jianshu.com/p/bcb2f77d90e8

首先要說明一下:hive的搭建除了hadoop之外還有mysql,所以這邊先簡單說一下centos下關於mysql的安裝。

1.MYSQL的準備

1.首先卸載CentOs自帶的mysql
執行rpm -qa | grep mysql選擇出現的機器上自帶的mysql
執行rpm -e 機器上mysql的名字 --nodeps
執行yum -y install mysql-server安裝新的
如果此時提示 mysql-server沒有可用包,分別執行:

yum -y install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server

執行service mysqld start開啓服務,然後執行service mysqld status看到開啓了,繼續接下來的步驟:
執行cd /usr/bin去目錄下執行命令./mysql_secure_installation
因爲第一次啓動密碼爲空,所以回車就可以,然後會要求設置密碼
後面會進行初始化設置:
1.是否刪除匿名用戶

Remove anonymous users? [Y/n] Y
... Success!

2.是否不允許用戶遠程連接

Disallow root login remotely? [Y/n] N
... Success!

3.是否刪除test數據庫

Remove test database and access to it? [Y/n] Y
 Dropping test database...
... Success!
 Removing privileges on test database...
... Success!

4.是否重裝

Reload privilege tables now? [Y/n] Y
... Success!

然後就完成了。我們登錄mysql
mysql -uroot -p
分別執行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

FLUSH PRIVILEGES;

exit;

mysql配置就完成了!

2.接下來就是Hive的時間了

我們去官網下載一個hive,注意版本!
然後放到文件夾下,這邊路徑是 /opt/soft
此時文件的所有者是root,可以修改一下
分別是:
chgrp 用戶名 文件名 -R更改文件所屬用戶組
chown 用戶名 文件名 -R 更改文件所屬用戶

去/etc/profile配置環境變量

export HIVE_HOME=/opt/soft/hive-2.3.4
export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
export PATH=$PATH:$HIVE_HOME/bin

執行source /etc/profile
1.hive-env.sh
增加以下:

JAVA_HOME=/opt/java/jdk1.8.0_201
HADOOP_HOME=/opt/soft/hadoop-2.7.1
HIVE_HOME=/opt/soft/hive-2.3.4

export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$HIVE_HOME/lib
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib

接下來就是編輯hive的配置文件了,這個是最費勁的!建議多使用vim的查找功能 也就是 Esc鍵之後 "/"鍵 寫單詞再回車!N是前一個單詞,n是後一個單詞。
在這之前先去hive的目錄創建四個文件夾分別是:warehouse、log、tmp/resources、tmp/hiveJobsLog
2.hive-site.xml
首先要把hive-default.xml.template文件名字改成hive-site.xml

<!-- 設定數據目錄 -->
<property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/opt/soft/hive-2.3.4/warehouse</value>
</property>
<!-- 設定臨時文件目錄 -->
<property>
      <name>hive.downloaded.resources.dir</name>
      <value>/opt/soft/hive-2.3.4/tmp/resources</value>
</property>
<!-- 存放hive相關日誌的目錄 -->
<property>
      <name>hive.querylog.location</name>
      <value>/opt/soft/hive-2.3.4/log</value>
</property>
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/opt/soft/hive-2.3.4/tmp/hiveJobsLog</value>
    <description>Local scratch space for Hive jobs</description>
</property>

這時候先保存一下讓我們緩一緩~上面是關於日誌和資源文件的修改。然後在hdfs上創建相同的目錄
依次執行:

hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/warehouse
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/resources
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/hiveJobsLog
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/log

hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/warehouse
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/resources
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/hiveJobsLog
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/log

接下來我們去修改其他關於mysql的配置。
依然是 hive-site.xml

<!-- 這四個參數設置連接mysql -->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://Master:3306/hive_metadata?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>root</value>
    <description>password to use against metastore database</description>
</property>

<!-- 自動分區 -->
<property>
    <name>hive.exec.dynamic.partition</name>
    <value>true</value>
 </property>
<property>
    <name>hive.exec.dynamic.partition.mode</name>
    <value>nonstrict</value>
 </property>
 <!-- 這裏注意一下,如果meta元數據在遠程的話可以在這裏進行配置,如果在本地就不需要,這邊mysql在Master上,所以不需要配置 -->
 <property>
    <name>hive.metastore.uris</name>
    <value/>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>
 <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>Master</value>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
  </property>
 <property>
    <name>hive.server2.metrics.enabled</name>
    <value>false</value>
    <description>Enable metrics on the HiveServer2.</description>
  </property>
  <property>
    <name>hive.server2.thrift.http.port</name>
    <value>10001</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'</description>
 </property>
<!-- HiveServer2的WEB UI -->
<property>
    <name>hive.server2.webui.host</name>
    <value>Master</value>
</property>
<property>
    <name>hive.server2.webui.port</name>
    <value>10002</value>
</property>
<property>
    <name>hive.scratch.dir.permission</name>
    <value>755</value>
</property>

終於!!!!終於改好了!!!還不知道對不對,是在太多了!

3.接下來是 配置日誌的地址, 修改hive-log4j.properties文件
cp hive-log4j.properties.template hive-log4j.properties
vi hive-log4j.properties

hive.log.dir=/opt/soft/hive-2.3.4/log4jFile

要先去創建文件夾哦!!!

4.然後拷貝一個JDBC包也就是mysql的連接包到hive的lib目錄下
由於我是用虛擬機,所以可以這麼弄。。。

cp /mnt/hgfs/shareOS/mysql-connector-java-5.1.6.jar /opt/soft/hive-2.3.4/lib/
  1. 拷貝jline擴展包
    $HIVE_HOME/lib目錄下的jline-2.12.jar包拷貝到$HADOOP_HOME/share/hadoop/yarn/lib目錄下
    如果hadoop那個lib裏有舊版本,就先把舊版本幹掉!
    他是個java命令行交互輸入庫。
cp /opt/soft/hive-2.3.4/lib/jline-2.12.jar /opt/soft/hadoop-2.7.1/share/hadoop/yarn/lib/

6.拷貝tools.jar包
複製$JAVA_HOME/lib目錄下的tools.jar到$HIVE_HOME/lib

cp $JAVA_HOME/lib/tools.jar /opt/soft/hive-2.3.4/lib/
  1. 執行初始化Hive操作
    現在有兩個選擇用MySql或者Derby,我們選擇mysql,當然把Derby的粘貼出來一下。
    mysql : schematool -dbType mysql -initSchema
    Derby: schematool -dbType mysql -initSchema
    mysql主要是用mysql做存儲hive元數據的數據庫,我們配置裏已經寫好了hive_metadata

#現在!!!!終於要使用了!!!!
1.開啓metastore
nohup hive --service metastore 2>&1 &
2.開啓hiveserver2
nohup hive --service hiveserver2 2>&1 &

ok!!啓動完之後看一下jps會多出兩個Runjar
然後去看一下 http://192.168.20.3:10002/
hiveServer2
發現ui可以的。
執行hive
hive操作
這裏使用了show databases;查看了一下數據庫,發現有個default,可以
use default;
show tables;
之類的命令,這裏不多提了,sql也不在這裏贅述了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章