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使用
三种部署模式
1.单用户模式 此模式连接到一个In-Memory 的数据库Derby,一般用于Unit Test。
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环境准备的主要内容,如果未能解决你的问题,请参考以下文章