hive有三種安裝方式:本地模式、單使用者模式、多使用者模式。
本地模式中依賴本地derby資料庫,單使用者和多使用者模式依賴mysql資料庫。
開始安裝
1、準備安裝節點
192.168.25.101 node01 //安裝mysql服務
192.168.25.102 node02 //安裝hive
2、安裝mysql
yum install mysql-server -y
解決yum安裝沒有可用包https://www.cnblogs.com/yowamushi/p/8043054.html
修改mysql權限:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
flush privileges;
3、解壓apache-hive-1.2.1-bin.tar.gz
tar -xzvf apache-hive-1.2.1-bin.tar.gz -C 目标檔案夾
4、配置hive-site.xml檔案
将hive-default.xml.template更改為hive-site.xml
檔案中配置為:
hive.metastore.warehouse.dir指定中繼資料存放檔案夾
javax.jdo.option.ConnectionURL指定mysql的url位址
javax.jdo.option.ConnectionDriverName指定mysql連接配接驅動
javax.jdo.option.ConnectionUserName指定mysql使用者名
javax.jdo.option.ConnectionPassword指定mysql登入密碼
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
5、配置環境變量
export HIVE_HOME=/opt/hive
PATH= P A T H : PATH: PATH:JAVA_HOME/bin: H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:HADOOP_HOME/sbin: Z O O K E E P E R H O M E / b i n : ZOOKEEPER_HOME/bin: ZOOKEEPERHOME/bin:HIVE_HOME/bin
export JAVA_HOME=/usr/java/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export HADOOP_HOME=/opt/hadoop
export HIVE_HOME=/opt/hive
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HIVE_HOME/bin
6、将mysql驅動包mysql-connector-java-5.1.32-bin.jar拷貝到hive安裝包lib下
mv mysql-connector-java-5.1.32-bin.jar /opt/hive/lib
7、node02節點中執行hive指令(需打開hadoop,才會執行hive成功)
若出現下面錯誤
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
錯誤的原因: Hadoop jline版本和hive的jline不一緻
将當期hive中的jline檔案覆寫hadoop中的jline檔案即可