Hadoop2.6下安裝Hive
安裝Mysql:
sudo apt-get install mysql-server mysql-client
安裝后檢查是否啟動(dòng)
創(chuàng)建數(shù)據(jù)庫(kù)Hive和用戶hadoop
用root身份進(jìn)入mysql:
mysql -u root -p
解壓及配置Hive
我的hadoop安裝目錄在 /usr/local/hadoop-2.6.4 中,解壓apache-hive-1.1.1-bin.tar.gz到 /usr/local/hadoop-2.6.4/hive 中。
- tar –zxvf /usr/local/hadoop/hive apache-hive-1.1.1-bin.tar.gz
修改 /etc/profile 文件,添加HIVE_HOME和PATH
- export HIVE_HOME=/usr/local/hadoop-2.6.4/hive/apache-hive-1.1.1-bin
- export PATH= \${PATH}:\${HIVE_HOME}/bin
- source /etc/profile 使配置生效
在 /usr/local/hadoop-2.6.4/apache-hive-1.1.1-bin/conf 復(fù)制一份 hive-default.xml.template 為 hive-size.xml 文件
- cp hive-default.xml.template hive-site.xml
修改內(nèi)容如下,模板里面沒有 hive.metastore.local ,手動(dòng)添加,賬戶和密碼是使用Mysql的賬戶密碼:
- <property>
- <name>hive.metastore.local</name>
- <value>true</value>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost: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>
在 /usr/local/hadoop-2.6.4/apache-hive-1.1.1-bin/bin/ 修改hive-config.sh添加下面的3個(gè)export語(yǔ)句
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
export HADOOP_HOME=/usr/local/hadoop-2.6.4
export HIVE_HOME=/usr/local/hadoop-2.6.4/hive/apache-hive-1.1.1-bin
將下載的 mysql-connector-java-5.1.40 中的 mysql-connector-java-5.1.40-bin.jar 復(fù)制到apache-hive-1.1.1-bin/lib 中
啟動(dòng)hive
在Mysql和Hadoop運(yùn)行的情況下,使用 hive 命令運(yùn)行hive:
hive
可能發(fā)生的問題
(1)Exception in thread “main” java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: \${system:java.io.tmpdir%7D/\$%7Bsystem:user.name%7D
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)
at
處理辦法:在配置文件hive-site.xml里找” system:java.io.tmpdir “把他們都換成絕對(duì)路徑如: /usr/local/hadoop-2.6.4/hive/apache-hive-1.1.1-bin/iotmp
(2)[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
原因:hadoop目錄下存在老版本jline:
/usr/local/hadoop-2.6.4/share/hadoop/yarn/lib/:
-rw-r–r– 1 root root 87325 Mar 10 18:10 jline-0.9.94.jar
解決辦法:
cp /usr/local/hadoop-2.6.4/hive/apache-hive-1.1.1-bin/lib/jline-2.12.jar /usr/local/hadoop-2.6.4/share/hadoop/yarn/lib/