数据分析引擎:Hive(2.3,在2.2.0版本以后是没有hwi,没有网页访问页面)
1、为什么需要数据分析引擎?什么是数据分析引擎?
(*) 不懂Java和Scala语言,如何进行大数据的分析?
(*) 懂SQL语言, select **** from ****
2、常见数据分析引擎:Hive、Pig、Imapla
3、Hive是基于Hadoop之上的一个数据仓库
Hive HDFS
表 ---------> 目录
数据 ---------> 文件
分区 ---------> 目录
4、Hive是一个翻译器,把SQL语句 ----> MapReduce程序
Hive支持的SQL,是SQL92的子集
需启动 hiveserver2 & 才能使用java api访问
三、Apache Hive的体系结构
root权限问题
解决方法
Hive的安装和配置
1、安装模式:嵌入模式(本地模式)和 远程模式 ----> 元信息如何存储
Hive的核心配置文件: conf/hive-site.xml
解压:tar -zxvf apache-hive-2.3.0-bin.tar.gz -C ~/training/
设置环境变量:vi ~/.bash_profile
export HIVE_HOME=/root/training/apache-hive-2.3.0-bin
export PATH=$PATH:$HIVE_HOME/bin
(2)在目录$HIVE_HOME/conf/下,
执行命令
mv hive-default.xml.template hive-site.xml 重命名
在目录$HIVE_HOME/conf/下,执行命令
mv hive-env.sh.template hive-env.sh 重命名
(3)修改hadoop的配置文件hadoop-env.sh,修改内容如下:
export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin
(4)在目录$HIVE_HOME/bin下面,修改文件
vi bin/hive-config.sh,增加以下内容:
export JAVA_HOME=/root/training/jdk1.8.0_144
export HIVE_HOME=/root/training/apache-hive-2.3.0-bin
export HADOOP_HOME=/root/training/hadoop-2.7.3
2、嵌入模式(本地模式)
(*)使用Hive自带的Derby数据库作为元信息的存储数据库
(*)只能支持一个连接
hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveowner</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Welcome_1</value>
</property>
</configuration>
MySQL数据库的配置:
创建一个新的数据库:create database hive;
创建一个新的用户:
create user 'hiveowner'@'%' identified by 'Welcome_1';
给该用户授权
grant all on hive.* TO 'hiveowner'@'%';
grant all on hive.* TO 'hiveowner'@'localhost' identified by 'Welcome_1';
flush privileges;
初始化MetaStore ----> 需要把MySQL连接的jar包放到Hive/lib目录下
schematool -dbType mysql -initSchema
启动命令 hive
如果没有配置将hive-default.xml改名成hive-site.xml 运行成功后会在conf下产生 metastore_db这个文件会影响以后的第二次初始化,这就会报异常
需要启动 server
启动命令 hiveserver2 &
信息:Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
HBase上的MapReduce: 单词计数 WordCount
1、创建数据表
create 'word','content'
put 'word','1','content:info','I love Beijing'
put 'word','2','content:info','I love China'
put 'word','3','content:info','Beijing is the capital of China'
2、创建结果表
create 'stat','content'
3、依赖的jar包
(*)HBase的jar
(*)MapReduce的jar
基于hadoop的 hive 数据仓库,必须启动hadoop ,问题解决 hdfs://hadoop01:50070/tmp/hive
或需添加 此配置到hive-site.xml
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.in.test</name>
<value>true</value>
</property>
2.3.0没有 hwi,配置了也没用,无法启动hwi
http://apache.fayea.com/hive/hive-1.2.2/
<property>
<name>hive.hwi.listen.host</name>
<value>172.18.58.116</value>
<description>listen address.(监听的地址</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>listen port...(监听的端口)</description>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.13.1.war</value>
<description>HWI服务运行的WAR包路径 </description>
</property>
- 启动
进入$HIVE_HOME/bin/
运行:hive –service hwi >> /tmp/hive-hwi.log 2>&1 &
HWI服务的日志被记录在tmp/hive-hwi.log中。
查看该日志文件:
日志中提示 Started SocketConnector@172.16.213.12:9999 ,说明hwi服务正常启动。
15.2 使用HWI
- 用户认证信息
使用浏览器打开:http://172.16.213.12:9999/hwi/
首先会提示填入用户的信息,即用户名和用户组,填入之后点击Submit,提示认证完成。
进入HWI web页面
查看数据库中的表:
单击Create Session,并输入任务名称(自定义)
输入相关信息
Result File:结果输出文件
Error File:错误输出文件(可不填)
Query:需要执行的语句,一些需要设置的参数也在这里面进行
Start Query:选择Yes,默认是No则为不执行,只保存写入的信息
注:结果输出文件事先不存在,则为创建;如果存在则会覆盖
总的来说,HWI支持web方式查询/操作,但是执行过程没有提示。