說明:安裝hive前提是要先安裝hadoop集羣,而且hive只須要再hadoop的namenode節點集羣裏安裝便可(須要再全部namenode上安裝),能夠不在datanode節點的機器上安裝。另外還須要說明的是,雖然修改配置文件並不須要你已經把hadoop跑起來,可是本文中用到了hadoop命令,在執行這些命令前你必須確保hadoop是在正常跑着的,並且啓動hive的前提也是須要hadoop在正常跑着,因此建議你先將hadoop跑起來在按照本文操做。html
如何安裝和啓動hadoop集羣,請參考:java
https://www.cnblogs.com/doubleuncle/p/10375454.htmlnode
1.安裝hivemysql
下載hivesql
地址:http://hive.apache.org/downloads.html數據庫
使用SecureFX將hive上傳至hadoop1的/opt/hive文件夾中apache
解壓文件函數
#tar -zxvf apache-hive-2.3.4-bin.tar.gzoop
修改配置文件測試
#vi /etc/profile
在任意位置添加如下內容
export JAVA_HOME=/opt/java/jdk1.8.0_201
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop/hadoop-2.6.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADDOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/bin
export HIVE_HOME=/opt/hive/apache-hive-2.3.4-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$:CLASSPATH:$HIVE_HOME/lib/
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin
重啓profile文件
#source /etc/profile
hive配置文件修改:
新建並修改hive-site.xml文件
#cp /opt/hive/apache-hive-2.3.4-bin/conf/hive-default.xml.template /opt/hive/apache-hive-2.3.4-bin/conf/hive-site.xml
修改這個新建的hive-site.xml文件
【
修改hive-site.xml中的臨時目錄
將hive-site.xml文件中的全部的${system:java.io.tmpdir}替換爲hive的臨時目錄(例如我替換爲/opt/hive/tmp,該目錄若是不存在則要本身手工建立,而且賦予讀寫權限)
將hive-site.xml文件中的全部的${system:user.name}都替換爲root
修改hive-site.xml數據庫相關的配置
搜索javax.jdo.option.ConnectionURL,將該name對應的value修改成MySQL的地址,例如我修改後是:
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive?createDatabaseIfNotExist=true</value>
搜索javax.jdo.option.ConnectionDriverName,將該name對應的value修改成MySQL驅動類路徑,例如個人修改後是:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com/mysql/cj/jdbc/Driver</value>
</property>
(
tips:
jdk7+老版5.0驅動請填入com/mysql/jdbc/Driver
jdk8+新版6.0驅動請填入com/mysql/cj/jdbc/Driver
我這裏使用的驅動是mysql-connector-java-6.0.6.jar
)
搜索javax.jdo.option.ConnectionUserName,將對應的value修改成MySQL數據庫登陸名:
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
搜索javax.jdo.option.ConnectionPassword,將對應的value修改成MySQL數據庫的登陸密碼:
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
搜索hive.metastore.schema.verification,將對應的value修改成false:
<name>hive.metastore.schema.verification</name>
<value>false</value>
】
使用hadoop新建hdfs目錄
【
由於在hive-site.xml中有這樣的配置:
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
因此要讓hadoop新建/user/hive/warehouse目錄,執行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
給剛纔新建的目錄賦予讀寫權限,執行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /user/hive/warehouse
讓hadoop新建/tmp/hive/目錄,執行命令:
$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/
給剛纔新建的目錄賦予讀寫權限,執行命令:
$HADOOP_HOME/bin/hadoop fs -chmod 777 /tmp/hive
】
檢查hdfs目錄是否建立成功
【
$HADOOP_HOME/bin/hadoop fs -ls /user/hive/
$HADOOP_HOME/bin/hadoop fs -ls /tmp/
】
新建hive-env.sh文件並進行修改
【
將hive-env.sh.template文件複製一份,而且更名爲hive-env.sh
cp /opt/hive/apache-hive-2.3.4-bin/conf/hive-env.sh.template /opt/hive/apache-hive-2.3.4-bin/conf/hive-env.sh
打開hive-env.sh配置而且添加如下內容
export HADOOP_HOME=/opt/hadoop/hadoop-2.6.5
export HIVE_CONF_DIR=/opt/hive/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-2.3.4-bin/lib
】
2.安裝mysql(由於hive自帶關係型數據庫derby不夠穩定,建議使用mysql數據庫)
下載hive
地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads
使用SecureFX將mysql上傳至hadoop1的/opt/mysql文件夾中
解壓文件
#tar -zxvf MySQL-5.6.43-2.sles12.x86_64.rpm-bundle.tar
安裝文件
#rpm -ivh *.rpm
從新啓動機器
#reboot
進入mysql數據庫,修改root用戶密碼
#set password for root@localhost = password('root');
修改遠程登錄權限
#update user set host = '%' where user = 'root';
#flush privileges;
3.啓動和測試
對MySQL數據庫進行初始化
進入到hive的bin目錄
#cd /opt/hive/apache-hive-2.1.1-bin/bin
對數據庫進行初始化
#./schematool -initSchema -dbType mysql
(
tips:
[INFO] Unable to bind key for unsupported operation: backward-delete-word
……
報錯緣由暫未找到,但顯示schemaTool completed說明數據化初始已成功
)
執行成功後,hive數據庫裏已經有一堆表建立好了
啓動hive
進入到hive的bin目錄
#cd /opt/hive/apache-hive-2.1.1-bin/bin
執行hive腳本進行啓動
#./hive
執行簡單命令測試
查看函數的命令
#show functions;
查看sum函數的詳細信息
#desc function sum;
新建數據庫db_hive_edu
create database db_hive_edu;