1. 程式人生 > >hive2.3.3安裝過程

hive2.3.3安裝過程

基礎:hadoop2.7.3叢集安裝好並且能正常啟動。zookeeper3.4.6。mysql:5.1都已經安裝好。

一、    修改mysql的密碼
    /usr/bin/mysql_secure_installation
    (注意:刪除匿名使用者,允許使用者遠端連線)
    登陸mysql
    mysql -u root -p

二、配置hive
    cp hive-default.xml.template hive-site.xml 
    修改hive-site.xml(刪除所有內容,只留一個<property></property>)
    新增如下內容:
    <property>
      <name>javax.jdo.option.ConnectionURL</name>

<!--hadoop00:你的mysql伺服器ip-->
      <value>jdbc:mysql://hadoop00: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>

<!--mysql使用者名稱下一個是密碼--》    

<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>123</value>
      <description>password to use against metastore database</description>
    </property>

安裝hive和mysq完成後,將mysql的連線jar包拷貝到$HIVE_HOME/lib目錄下
    如果出現沒有許可權的問題,在mysql授權(在安裝mysql的機器上執行)
    mysql -uroot -p
    #(執行下面的語句  *.*:所有庫下的所有表   %:任何IP地址或主機都可以連線)
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

然後初始化,在hive的bin目錄下:
    初始化:./schematool -dbType mysql -initSchema

最後進入hive:./hive

普通的問題大部分都有答案。這裡介紹一個錯誤,如果你碰到的好不防試一下:

在執行./hive時可能會出現一直執行的情況,如下:

或者hive雖然啟動起來了但是執行命令時又碰到上述情況。此時你可以檢視logs日誌。存放位置為(此處為摘錄):

Hive中的日誌分為兩種
1. 系統日誌,記錄了hive的執行情況,錯誤狀況。
2. Job 日誌,記錄了Hive 中job的執行的歷史過程。

系統日誌儲存在什麼地方呢 ?
在hive/conf/ hive-log4j.properties 檔案中記錄了Hive日誌的儲存情況,
預設的儲存情況:

hive.root.logger=WARN,DRFA
hive.log.dir=/tmp/${user.name} # 預設的儲存位置
hive.log.file=hive.log  # 預設的檔名

Job日誌又儲存在什麼地方呢 ?

//Location of Hive run time structured log file
    HIVEHISTORYFILELOC("hive.querylog.location", "/tmp/" + System.getProperty("user.name")),
預設儲存與 /tmp/{user.name}目錄下。
你可以通過檢視日誌分析原因,除了你沒有存放mysql驅動外,最大的原因可能是:

在/hive/conf/hive-site.xml中的<property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://192.168.8.7:3306/hive?createDatabaseIfNotExist=true</value>這個配置。value值必須在一行,就算放不下讓它自動換行,你別換。而且不能有空格。

 

幾個hive測試例項

建表(預設是內部表)
    create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t';
    建分割槽表
    create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '\t';
    建外部表
    create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t' location '/td_ext';

7.建立分割槽表
    普通表和分割槽表區別:有大量資料增加的需要建分割槽表
    create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by '\t'; 

    分割槽表載入資料
    load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22');
    
    load data local inpath '/root/data.am' into table beauty partition (nation="USA");

    
    select nation, avg(size) from beauties group by nation order by avg(size);

   顯示錶:show tables;

備註:一般安裝過程就這樣。遇到什麼問題解決什麼問題。如果想方便的話還可以把hive新增的環境變數。