1. 程式人生 > >Hive本地模式安裝配置

Hive本地模式安裝配置

準備:

基本步驟:

一. 解除安裝mysql

二. 安裝mysql

三. 安裝hive

一. 解除安裝mysql

#1.檢查是否已經安裝MySQL元件
[root@sst_search_a /]# rpm -qa | grep -i mysql
MySQL-devel-5.6.23-1.linux_glibc2.5
MySQL-client-5.6.23-1.linux_glibc2.5
MySQL-server-5.6.23-1.linux_glibc2.5

#2.解除安裝前關閉MySQL服務
[root@sst_search_a /]# service mysql status
 MySQL running (25673)[  OK  ]
[root@sst_search_a /]# service mysql stop
 Shutting down MySQL..[  OK  ]
[root@sst_search_a /]# service mysql status
 MySQL is not running[FAILED]

#3.收集MySQL對應資料夾資訊
[root@sst_search_a /]# find / -name mysql
/etc/rc.d/init.d/mysql
/etc/logrotate.d/mysql
/var/lock/subsys/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/include/mysql
/usr/include/mysql/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/lib64/mysql

#4.解除安裝MySQL各類元件及資料夾
#刪除元件
[root@sst_search_a /]# rpm -ev MySQL-devel-5.6.23-1.linux_glibc2.5
[root@sst_search_a /]# rpm -ev MySQL-server-5.6.23-1.linux_glibc2.5
[root@sst_search_a /]# rpm -ev MySQL-client-5.6.23-1.linux_glibc2.5

#刪除資料夾
[root@DB-Server init.d]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql/mysql
[root@DB-Server init.d]# rm -rf /usr/lib64/mysql

#5.確認MySQL徹底刪除
[root@sst_search_a /]# rpm -qa | grep -i mysql
二、 安裝MySQL

#當前為root賬戶
#1.安裝server
[root@sst_search_a hive]# rpm -ivh /opt/MySQL-server-5.5.15-1.linux2.6.x86_64.rpm
Preparing...       ########################################### [100%]   
1:MySQL-server     ########################################### [100%]   
......  
/usr/bin/mysqladmin -u root password 'new-password'   
/usr/bin/mysqladmin -u root -h test1 password 'new-password'   
......
#檢視mysql3306埠
[root@sst_search_a hive]# netstat -nat
tcp  0  0 0.0.0.0:3306     0.0.0.0:*      LISTEN

#2.安裝client
[root@sst_search_a hive]# rpm -ivh /opt/ MySQL-client-5.5.15-1.linux2.6.x86_64.rpm
warning: MySQL-client-5.1.7-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5   
Preparing...    ########################################### [100%]   
1:MySQL-client  ########################################### [100%]

#3.修改密碼
[root@sst_search_a hive]# usr/bin/mysqladmin -u root password 'new-password'
#mysqladmin -u使用者名稱 -p舊密碼 password 新密碼
[root@sst_search_a hive]# mysql -uroot -new-password
mysql> insert into mysql.user(Host,User,Password) values("localhost","hive",password("hive"));
mysql> create database hive;
mysql> grant all on hive.* to hive@'%'  identified by 'hive';
mysql> grant all on hive.* to hive@'localhost'  identified by 'hive';
mysql> flush privileges;
mysql> exit;
[root@sst_search_a hive]# mysql -uhive -phive
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| test               |
+--------------------+
3 rows in set (0.00 sec)
mysql> exit;
三、安裝Hive

#切換至hadoop賬戶
[hadoop@sst_search_a ~]$ vi  .bash_profile

#HIVE_HOME
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

[hadoop@sst_search_a ~]$ source .bash_profile

#配置hive-env.sh
[hadoop@sst_search_a conf]$ cp hive-env.sh.template hive-env.sh
[hadoop@sst_search_a conf]$ vi hive-env.sh

export HIVE_HOME=/opt/hive

[hadoop@sst_search_a conf]$ source hive-env.sh

#配置hive-site.xml
[hadoop@sst_search_a conf]$ cp hive-default.xml.template hive-site.xml
[hadoop@sst_search_a conf]$ vi hive-site.xml
#檔案比較大,使用'/javax.jdo.option.ConnectionURL'查詢

<property> 
   <name>javax.jdo.option.ConnectionURL </name> 
   <value>jdbc:mysql://localhost:3306/hive </value> 
</property> 
 
<property> 
   <name>javax.jdo.option.ConnectionDriverName </name> 
   <value>com.mysql.jdbc.Driver </value> 
</property>

<property> 
   <name>javax.jdo.option.ConnectionPassword </name> 
   <value>hive </value> 
</property> 
 
<property> 
   <name>hive.hwi.listen.port </name> 
   <value>9999 </value> 
   <description>This is the port the Hive Web Interface will listen on </descript ion> 
</property> 

<property> 
   <name>datanucleus.autoCreateSchema </name> 
   <value>true</value> 
</property> 
 
<property> 
   <name>datanucleus.fixedDatastore </name> 
   <value>false</value> 
</property>

  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hdpsrc/hive/iotmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/hdpsrc/hive/iotmp</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
  <property>
    <name>hive.querylog.location</name>
    <value>/home/hdpsrc/hive/iotmp</value>
    <description>Location of Hive run time structured log file</description>
  </property>

#拷貝mysql-connector-java-5.1.6-bin.jar 到hive 的lib下面
[hadoop@sst_search_a conf]$ mv /opt/Desktop/mysql-connector-java-5.1.6-bin.jar /opt/hive/lib/

#把jline-2.12.jar拷貝到hadoop相應的目錄下,替代jline-0.9.94.jar,否則啟動會報錯
[hadoop@sst_search_a conf]$ cp /opt/hive/lib/jline-2.12.jar /opt/hadoop-2.6.0/share/hadoop/yarn/lib/

[hadoop@sst_search_a conf]$ mv /opt/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar /opt/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar.bak /

#建立hive臨時資料夾
[hadoop@sst_search_a conf]$ mkdir /opt/hive/iotmp

#啟動hadoop後測試hive
[hadoop@sst_search_a conf]$ hive
hive> show databases;
OK
default
Time taken: 0.907 seconds, Fetched: 1 row(s)

四、遇到的問題

問題1:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/........../lib/slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/........../slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

解決辦法:
jar包重複,刪掉了hive/lib資料夾下的對應jar包

問題2:

Logging initialized using configuration in jar:file:/opt/tuniu/hive/apache-hive-2.1.0-bin/lib/hive-common-2.1.0.jar!/hive-log4j2.properties Async: true
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Permission denied
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:557)
        at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.io.IOException: Permission denied
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createTempFile(File.java:2024)
        at org.apache.hadoop.hive.common.FileUtils.createTempFile(FileUtils.java:785)
        at org.apache.hadoop.hive.ql.session.SessionState.createTempFile(SessionState.java:904)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:555)
        ... 9 more

解決辦法:
注意到permission denied,一定是許可權問題。猜測可能是hadoop使用者對hive資料夾許可權不夠,暴力賦予了足夠的許可權
chmod 777 -R /opt/hive
(注意這裡其實問題變形很多,還是得讀一下自己的錯誤日誌)

問題3:

which: no hbase in (/opt/tuniu/java/jdk1.8.0_101/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/tuniu/hadoop/hadoop-2.6.4/bin:/opt/tuniu/hadoop/hadoop-2.6.4/sbin:/root/bin:/opt/tuniu/hive/apache-hive-2.1.0-bin/bin)

還沒搞明白和hbase有什麼關係。。。不影響使用,暫時擱置。