hive环境准备

Posted 破产DBA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive环境准备相关的知识,希望对你有一定的参考价值。

准备工作

hadoop中创建文件夹

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

hdfs dfs -mkdir -p /user/hive/tmp

hdfs dfs -mkdir -p /user/hive/log

hdfs dfs -chmod -R 777 /user/hive/warehouse

hdfs dfs -chmod -R 777 /user/hive/tmp

hdfs dfs -chmod -R 777 /user/hive/log

创建mysql数据库

create database hivedb default character set utf8;

create user hiveuser identified by "hive123321";

grant all on hivedb.* to hiveuser;

配置

配置hive非常简单, 在hive1上面安装配置即可;

解压

mkdir /usr/hive

tar -zxvf apache-hive-2.3.2-bin.tar.gz –C /usr/hive

复制配置文件

cd /usr/hive/conf

cp hive-env.sh.template hive-env.sh

cp hive-default.xml.template hive-site.xml

cp hive-log4j2.properties.template hive-log4j2.properties

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

添加对应环境变量

vi /etc/profile

export HIVE_HOME=/usr/hive

export PATH=${HIVE_HOME}/bin:$PATH

修改配置文件

hive-env.sh

export JAVA_HOME=/usr/jdk    

export HADOOP_HOME=/usr/hadoop

export HIVE_HOME=/usr/hive

export HIVE_CONF_DIR=/usr/hive/conf

hive-site.xml

<property>

   <name>hive.exec.scratchdir</name>

   <value>/user/hive/tmp</value>

</property>

<property>

   <name>hive.metastore.warehouse.dir</name>

   <value>/user/hive/warehouse</value>

</property>

<property>

   <name>hive.querylog.location</name>

   <value>/user/hive/log</value>

</property>

## 配置 MySQL 数据库连接信息

<property>

   <name>javax.jdo.option.ConnectionURL</name>

   <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>

 </property>

 <property>

   <name>javax.jdo.option.ConnectionDriverName</name>

   <value>com.mysql.jdbc.Driver</value>

 </property>

 <property>

   <name>javax.jdo.option.ConnectionUserName</name>

   <value>hiveuser</value>

 </property>

 <property>

   <name>javax.jdo.option.ConnectionPassword</name>

   <value>hive123321</value>

 </property>

批量替换变量

mkdir /usr/hive/tmp

把${system:java.io.tmpdir} 改成 /home/hadoop3/hive2.3.2/tmp

{system:user.name}改成 {user.name}

元数据初始化

需要下载mysql连接jar包:

http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar

schematool -initSchema -dbType mysql

hive使用

​hive环境准备

三种部署模式

1.单用户模式 此模式连接到一个In-Memory 的数据库Derby,一般用于Unit Test。

​hive环境准备

2.多用户模式 通过网络连接到一个数据库中,是最经常使用到的模式。

3.  远程服务器模式 用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库。

hive启动

hive CLI

hive的命令行模式, 随用随启:

bin/hive的执行程序,或者输入 hive –service cli

hiveserver2

nohup hiveserver2 &

hive –service hiveserver2  &

查看hiveserver2启动状态

netstat -nptl | grep 10000

单独启动服务:

hive --service metastore &

hive --service hiveserver &

说明:

通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,连这个和都允许远程客户端使用多种编程语言如java,python等向hive提交请求,取回结果(从hive0.15起就不再支持hiveserver了),但是在这里我们还是要说一下hiveserver

   HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thrift server,而HiveServer2却不会。既然已经存在HiveServer,为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供更好的支持。

hive连接使用

hive命令

beeline客户端

beeline>!connect jdbc:hive2://localhost:10000 hiveuser hive123321

hive命令选项:

-e 查询语句

-f 语句文件

-h hostname

-p 端口

-s silent

-i 初始化文件

   每次进入hive之前都会执行文件中内容

--hiveconf 配置参数值,比如:

--hiveconf hive.cli.print.current.db=db

也可以定义参数值

--hiveconf y=5

hive> set y;

y=5

可直接用于查询:

hive> select ${hiveconf:y};


--hivevar   定义变量 如:--hivevar A=B

     --hivevar y=5

可直接将变量用于查询:

hive> select ${hivevar:y};

5


显示字段名称:

set hive.cli.print.header=false;


hive命令中执行hadoop命令

hive> dfs -ls /  ;

Found 2 items

drwxr-xr-x   - hadoop supergroup          0 2018-03-09 14:12 /test

drwxr-xr-x   - hadoop supergroup          0 2018-03-10 14:07 /user

hive排错

如果hive遇到错误,想查询更详细的错误日志, 可以这样配置logger参数

hive -hiveconf hive.root.logger=DEBUG,console

以上是关于hive环境准备的主要内容,如果未能解决你的问题,请参考以下文章

大数据数据仓库环境准备

数据仓库环境准备Hive常见问题及解决方式

数据仓库环境准备Hive常见问题及解决方式

Hive 源码解读 准备篇 Debug 讲解

Hive 源码解读 准备篇 Debug 讲解

数仓4.0笔记——数仓环境搭建—— DataGrip准备和数据准备