day10-day11 impala hue oozie
1. impala介绍
1.1 启动impala
-
先启动hive
bin/hive --service hiveserver2 ---->后台 bin/hive --service hiveserver2 &
nohup bin/hive --service metastore &(impala需要)
-
再起动impala
主节点:
service impala-state-store start
service impala-catalog start
service impala-server start
从节点:
service impala-server start
1.2 impala依赖
- 依赖hdfs&hive的两个服务, 底层不需要跑mr,
- 开启hdfs短路读取
1.3 impala与hive之间的关系
impala与hive是紧耦合的,使用impala之前必须安装好hive数据仓库
impala的优点以及缺点:
优点:计算速度很快,提供近乎实时的查询响应
缺点:内存消耗大。官方推荐,每个impala的节点,内存最少128Gb
1.4 impala的基本结构
impala-state-store:主节点,状态存储区,主要用于存储sql执行的中间结果的保存
impala-catalog:主节点,元数据管理区。impala会读取hive当中的元数据信息,读取回来保存到自己的catalogg里面去
impala-server:从节点,主要就是执行我们的查询的sql语句。官方建议所有的impala-server与datanode安装在一起。可以使用hdfs的短路读取的特性
1.5 impala的安装:
-
CDH的官网没有提供impala的安装包下载
还可以通过rpm包的方式来进行安装
CDH的软件一般都提供多种方式安装,比如说.tar.gz 还比如说 rpm 还比如说 CM
-
node03的hive需要启动hiveserver 2 以及 metastore的服务
bin/hive --service hiveserver2
bin/hive --serivce metastore
-
1.6 impala 的shell的使用:
-
外部shell命令:
查看impala的版本: impala-shell -v -V 查看impala的帮助文档 impala-shell -h
通过 -i连接到某一台impala-server服务器
刷新我们hive的所有的元数据信息
impala-shell -r
-
通过 -f 执行我们impala执行sql脚本 类似于hive的 -f
impala-shell -f impala.sql
通过-q 来指定我么impala直接执行sql脚本 类似于hive的 -e
impala-shell -q “select * from myhive.student”;
-
内部的shell命令:
进入到impala-shell内部之后的一些可以执行的参数
- refesh dbname.tabname 主要是用于帮助我们刷新hive当中的某一张表发生变化,比如hive当中一张表分区数添加,可以用这个命令。增量的刷新。如果hive当中新建的数据库表,这个命令刷不到
- invalidate metadata 全量的刷新,将hive当中所有的元数据信息,全部刷新过来保存到catalog里面去。性能消耗比较大,一般不要轻易使用,只有hive当中新建数据库或者新建数据库表的时候,才有可能用到
- impala当中直接创建的数据库或者数据库表,impala当中都可以直接 看得到,但是hive当中创建的数据库以及数据库表必须刷新之后,impala才能看得到。
-
因为impala自己创建的数据库以及数据库表,直接将元数据信息保存到catalog里面去了
以后完全可以使用impala代替掉我们的hive
3. 启动hue
-
hive flume sqoop mapreduce impala hdfs
-
使用一个工具hue:来集成我们各种学过的框架,集成之后,可以提供客户端,让我们去开发各种其他的框架
hue:hadoop user expression
只要将hue安装上之后,就会非常方便,提供图像化的界面,供我们操作各个其他框架
一句话总结:Hue是一个友好的界面集成框架,可以集成我们各种学习过的以及将要学习的框架,一个界面就可以做到查看以及执行所有的框架
cd /export/servers/hue-3.9.0-cdh5.14.0/
build/env/bin/supervisor
4. oozie
4.1 启动
- 任务调度组件
- workflow中一个action就是一个job任务
- 依赖yarn
4.2 oozie基本介绍
-
oozie:单独使用不太好用。与hue整合之后,就比较好用了
-
与azkaban的功能类似。任务调度的框架
oozie的定义语言都是使用xml编写的。里面都是由一个个的action组成的,一个action就是我们一个需要调度的任务。每一个action的执行,都是启用一个MR的程序来进行执行的
-
oozie当中的组件:
- workflow:工作流定义,就是用于定义我们的调度任务。一个workflow里面有很多的action组成,一个aciton就是一个要执行的任务
- Coordinator:协作器。用于定时执行我们的workflow。说白了就是一个定时组件,用于定时的执行我们的workflow
- bundle:捆绑器,用于将我们的多个coordinator 捆绑到一起去执行。基本上没用
-
解压 oozie-hadooplibs-4.1.0-cdh5.14.0.tar.gz 到与oozie安装目录的平行路径
oozie的安装目录
/export/servers/oozie-4.1.0-cdh5.14.0
/export/servers/abc
/export/xxx
-
oozie调度执行shell脚本
-
job.properties 定义了一些变量。需要保存在linux本地
-
workflow.xml 定义我们需要执行的任务。一个workflow都是由一个个的action组成的,一个action就是我们一个需要调度的任务。需要上传到hdfs上面去
-
配置我们workflow.xml文件的路径
hdfs://node01:8020/user/root/oozie_works/shell
-
-
oozie当中的coordinator 定时器的任务组件
可以通过coordinator 这个组件,来定时的执行我们的workflow.
任何一个任务调度的框架,都会支持定时的执行
任务的定时主要有两种方式:
-
第一种方式:基于数据的定时任务执行。有了数据就执行我们的定时任务,这种方式没人用
-
第二种:基于时间的定时任务的执行。通过配置我们的时间,定时的去执行我们的任务。例如我们可以定时晚上两点钟去执行,也可以定时每隔五分钟执行一次等等
coordinator 也是通过xml语言来定义执行的
如果不适用hue,就不要使用oozie了
如果hue与oozie整合之后,我们就可以 通过浏览器页面拖拉拽的方式就可以实现我们的定时任务的定时执行
-