hive3.12本地安裝測試簡記


前置條件:

依賴jdk,請下載jdk8並解壓

依賴hadoop,請首先下載hadoop並解壓

step1/hive metastore建議使用mysql進行存儲,
安裝mysql這一步忽略,請自行安裝,如果使用docker,可以使用一句docker run解決。
創建hive用戶密碼和數據庫。
mysql
grant all privileges on *.* to hive@'%' identified by 'hive';
flush privileges ;
step2//下載hive3.1.2版本並解壓配置
#####conf
配置hive-site.xml log4j and hive-env.sh
HIVE_HOME/conf下面操作
cp hive-log4j2.properties.template hive-log4j2.properties
這樣可以后續找到hive.log文件,查看安裝使用過程中可能出現的錯誤,
通過日志解決問題是非常非常重要的。
property.hive.log.dir = /var/log/hive

配置hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>


<configuration>

 <property>
      <name>hive.exec.scratchdir</name>
      <value>/tmp/hive/stage/</value>
    </property>

    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/Users/student2020/data/hive/</value>
    </property>


    <property>
      <name>hive.metastore.uris</name>
      <value>thrift://127.0.0.1:9083</value>
    </property>


    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
    </property>

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://127.0.0.1:13306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
    </property>

    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value>
    </property>

    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>hive</value>
    </property>


    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>127.0.0.1</value>
    </property>

    <property>
      <name>hive.server2.thrift.port</name>
      <value>10000</value>
    </property>

    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <property>
        <name>hive.server2.active.passive.ha.enable</name>
        <value>true</value>
    </property>



<property>
    <name>hive.support.concurrency</name>
    <value>true</value>
</property>
<property>
    <name>hive.exec.dynamic.partition.mode</name>
    <value>nonstrict</value>
</property>
<property>
    <name>hive.txn.manager</name>
    <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
    <name>hive.compactor.initiator.on</name>
    <value>true</value>
</property>
<property>
    <name>hive.compactor.worker.threads</name>
    <value>1</value>
</property>



</configuration>

 


配置hive-env.sh
配置JAVA_HOME=/PATH/TO/JDK
    HADOOP_HOME=/PATH/TO/HADOOP3
    
step3//使用hive自帶的工具初始化metastore需要的表
##### cd /hive/bin
schematool -dbType mysql -initSchema -verbose
step4//啟動hive metastore and hiveserver2(服務於beeline和jdbc訪問的方式)
###啟動hive metastore
export HIVE_HOME=/Users/student2020/app/hive312/
export PATH=$PATH:$HIVE_HOME/bin
hive --service metastore  -hiveconf hive.log.file=metastore.log  &
####啟動hive server2
hive --service hiveserver2 &

可以通過 查看 hive.log,檢查可能出現的錯誤,根據錯誤提示查找解決方案。


經過這次練習,可以知道 hive本地運行可以不啟用hdfs服務,但是需要有hadoop的編譯后的包,
需要配置hadoop_home的環境變量,因為hive的查詢要轉為mr,是需要使用hadoop
相關的jar包的。
編緝一個csv文件做數據測試。
create table test_csv (id int,name string,age int) row format delimited fields terminated by ',' stored as textfile;
load data local inpath '/Users/student2020/data/stage/test.csv' into table test_csv;
select * from test_csv;
查詢成功.

測試一下Acid表。3.x新版本的hive不需要對表強制進行分桶即可以使用transcion事務。

CREATE TABLE employee (id int, name string, salary int)

STORED AS ORC TBLPROPERTIES ('transactional' = 'true');

INSERT INTO employee VALUES(

(1, 'Jerry', 5000),

(2,'Jecky',5700)

)

update employee set salary=1000 where id=3;

delete from employ where id=2;

操作成功,如果操作失敗,請去hive.log中查看可能的錯誤。

已知的問題是hive3.1.2.搭配hadoop2.7.x會有更新失敗的問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM