這裏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/25a0650b4a40 和 https://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/
- 拷貝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/
- 執行初始化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/
發現ui可以的。
執行hive
這裏使用了show databases;
查看了一下數據庫,發現有個default,可以
use default;
show tables;
之類的命令,這裏不多提了,sql也不在這裏贅述了。