Hive的安裝與配置

獵手家園發表於2016-05-02

1、因為我使用MySQL做為Hive的後設資料庫,所以先安裝MySQL。

參考:http://www.cnblogs.com/hunttown/p/5452205.html

登入命令:mysql -h主機地址 -u使用者名稱 -p使用者密碼

mysql –u root    #初始登入沒有密碼

修改密碼

格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼

mysql>mysqladmin -uroot –password 123456

注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

建立用於hive的使用者hadoopuser

建立使用者命令:CREATE USER username@"host" IDENTIFIED BY 'password';

mysql> CREATE USER hadoopuser@"192.168.254.151" IDENTIFIED BY '123456';

授權命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

mysql> GRANT ALL PRIVILEGES ON *.* TO hadoopuser@"192.168.254.151" WITH GRANT OPTION;

建立使用者和授權可以一起做:

mysql> GRANT ALL PRIVILEGES ON *.* TO hadoopuser@"192.168.254.151" IDENTIFIED BY '123456' WITH GRANT OPTION;

建立資料庫hive,用於hive資料儲存

mysql> create database hive

2、解壓hive到 /home/hadoopuser/

3、切換到root使用者,加入環境變數:

export HIVE_HOME=/home/hadoopuser/hive
export PATH=$PATH:$HIVE_HOME/bin

4、使用root使用者,給hive/bin增加許可權

chmod 777 /hive/bin/*

5、配置檔案

切換到  /hive/conf

cp hive-default.xml.template  hive-site.xml
cp hive-log4j.properties.template hive-log4j.properties  #Hive-2.1.0沒有此配置項

(1)配置hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.254.156: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>hadoop</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
</configuration>

如果使用derby後設資料庫,則JDBC要配置成:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:/opt/hive/metastore_db;create=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>

注1:倉庫目錄如果沒有要建立

hdfs dfs –mkdir /user/hive
hdfs dfs –mkdir -p /user/hive/warehouse

注2:mysql的驅動jar包要上傳到hive/lib下

 

(2)配置hive-log4j.properties

#log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

6、在HDFS中建立/tmp和/user/hive/warehouse並設定許可權

hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse

注:hadoop 命令換成了hdfs命令,上面的命令如同下面的命令

hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /user/hive/warehouse

7、手動上傳mysql的jdbc庫到hive/lib目錄。

http://mirror.bit.edu.cn/mysql/Downloads/Connector-J/

mysql-connector-java-5.1.22-bin.jar

8、初始化  如果使用derby後設資料庫,那麼需要進行初始化:

[hadoopuser@Hadoop-NN-01 ~]# schematool -initSchema -dbType derby

#執行成功資訊
Starting metastore schema initialization to 2.0.0
Initialization script hive-schema-2.0.0.derby.sql
Initialization script completed
schemaTool completed

如果執行時出現以下錯誤,說明上面的步驟沒有執行,請執行:

Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

如果使用schematool初始化資料庫時出現以下錯誤:

Initialization script hive-schema-2.1.0.derby.sql
Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
*** schemaTool failed ***

說明資料庫資料夾中已經存在一些檔案,解決方法就是清空資料庫資料夾(也就是前面配置的/opt/hive/metastore_db資料夾)

9、啟動hive

hive --service metastore &        #啟動metastore服務
hive --service hiveserver2 &      #啟動hiveserver服務
hive shell                        #啟動hive客戶端

 

Hive 使用

1、建立資料庫

CREATE DATABASE myhive;

2、建立表

CREATE TABLE doc_hive (id int, username string, sex int, age int, email string, createtime string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

3、匯入資料

LOAD DATA LOCAL INPATH '/home/hadoopuser/doc/t-1.txt' OVERWRITE INTO TABLE doc_hive ;

驗證:select * from myhive.doc_hive;

Hive的具體使用,在接下來的部落格中會有體現。

相關文章