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会有更新失败的问题。

原文地址:https://www.cnblogs.com/huaxiaoyao/p/12159484.html