大数据之Impala安装使用
Kylin和Impala区别:
既然在线分析已经使用了kylin,为啥还用impala呢?
因为kylin不够灵活,只能分析简单的星型/雪花模型,impala可以通过窗口函数,进行复杂的行为数据分析;
反之,当数据量大的时候,impala比较慢,所以只用kylin进行预计算。
一、Impala介绍
Impala 是建立在 Hadoop 生态圈的交互式 SQL 解析、执行引擎,Impala 的 SQL 语法与 Hive 高度兼容,并且提供标准的 ODBC 和 JDBC 接口。
Impala 本身不提供数据的存储服务,其底层数据可来自 HDFS、Kudu、Hbase。
impala优势:
和 Hive 高度相似的 SQL 语法,无需太多学习成本
超大数据规模 SQL 解析的能力,高效利用内存与 CPU 利用,快速返回 SQL 查询结果。
集成多个底层数据源,HDFS、Kudu、Hbase 等数据皆可通过 Impala 共享,并且无需进行数据同
步。
与 Hue 深度集成,提供可视化的 SQL 操作以及 work flow。
提供标准 JDBC 和 ODBC 接口,方便下游业务方无缝接入。
提供最多细化到列的权限管理,满足实际生产环境数据安全要求。
impala角色:
impala是一个 MPP引擎,它是基于内存进行大规模数据分析的系统。
impala-server: impalad,它是 impala 系统的计算节点,每个 impalad 角色都是对等的,没有谁是 master;这就涉及到一个问题:分布式计算的任务如何协调,如何分片?——coordinator 角色负责!
那个 impalad 接收这个 sql,谁就承担 coordinator 的角色,它自己负责解析 sql,形成执行计划,进行任务分片,然后通知到其他 impalad 来协作。
impala-state-store: 它是 impala 系统的状态协调节点,主要负责协调集群状态;imapla-server 会跟Impala-state-store 进行周期性的心跳通信,来感知集群中各个节点的状态。
impala-catalog: 元数据管理节点;其实 impala 中,每一个 impalad,都会自己在内存中缓存一份元数据;正因为每个 impalad 都会缓存元数据,就会带来一个问题:当你在 hive 中进行了建表/修改表定义/导入新数据,这些操作后,impalad 中的元数据并不会自动更新;所以,发生这些操作后,需要在 impala 的 shell 中执行一个命令: invalidate metadata 这个命令一执行,接收命令的 impalad 会通知所有其他impalad 清空元数据,并请求 impala-catalog来更新自己的缓存;
如果只是对某个表定义的修改,那么可以只更新这个指定的表元数据:refresh [table].
二、impala安装
impala是使用c语言实现的,所以使用yum进行安装。
1、选择一台电脑安装httpd服务
yum install -y httpd
service httpd start
chkconfig httpd o
将安装包放在 /var/www/html目录下
2、关闭 selinux
# 临时关闭:
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce# 永久关闭:
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled 重启服务 reb
3、配置本地yum源
vi /etc/yum.repos.d/cdh-local.repo
[cloudera-repo]
name=cloudera-repo
DOIT 北京多易教育科技有限公司 www.51doit.com
baseurl=http://doitedu01/cloudera-repos/cdh6/6.2.1/redhat7/yum
enabled=1
gpgcheck=0
# 并拷贝至其他 2 个
4、安装impala
#在 doitedu01 上
yum install -y impala impala-server impala-state-store impala-catalog impala-shell#其他节点
yum install -y
5、复制 hadoop、hive 配置文件
# impala 的配置目录为/etc/impala/conf,这个路径下面需要把 core-site.xml,hdfs-site.xml 以及 hive-site.xml
# 所有节点执行以下命令
cp /opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml /etc/impala/conf/
cp /opt/apps/hadoop-3.1.1/etc/hadoop/hdfs-site.xml /etc/impala/conf/
cp /opt/apps/hive-3.1.2/conf/hive-site.xml /etc/impala/conf/
6、修改配置文件
# 所有节点
vi /etc/default/impala
# 集群唯一catalog服务器地址
IMPALA_CATALOG_SERVICE_HOST=impala01# 集群唯一state‐store服务器地址
IMPALA_STATE_STORE_HOST=impala01# catalog/state‐store 端口号,默认即可
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000# 日志存储目录
IMPALA_LOG_DIR=/var/log/impala
IMPALA_CATALOG_ARGS=" ‐log_dir=${IMPALA_LOG_DIR} "
IMPALA_STATE_STORE_ARGS=" ‐log_dir=${IMPALA_LOG_DIR} ‐
state_store_port=${IMPALA_STATE_STORE_PORT}"# 注意,这里有个大坑,‐use_statestore参数要赋值:=true
# 不然‐state_store_host配置项不生效
IMPALA_SERVER_ARGS=" \
‐log_dir=${IMPALA_LOG_DIR} \
‐catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
‐state_store_port=${IMPALA_STATE_STORE_PORT} \
‐use_statestore=true \
‐state_store_host=${IMPALA_STATE_STORE_HOST} \
‐be_port=${IMPALA_BACKEND_PORT}"
ENABLE_CORE_DUMPS=false
修改bigtop配置
vi /etc/default/bigtop‐utils
export JAVA_HOME=/opt/apps/jdk1.8.0_191/
放置mysql驱动jar
# 拷贝一个mysql驱动到 /usr/share/java/ 下
7、启动、关闭impala服务
# 切记启动HDFS和HIVE元数据服务
‐ 启动 HDFS
start‐dfs.sh‐ 启动hive metastore
hive ‐‐service metastore# doitedu01上
service impala‐state‐store start
service impala‐catalog start
service impala‐server start# 其他节点
service impala‐server start# 关闭服务
service impala‐state‐store stop
service impala‐catalog stop
service impala‐server stop
启动脚本
vi impall.sh
#!/bin/bash
service impala‐state‐store $1
service impala‐catalog $1
for i in {1..3}
do
ssh doitedu0${i} "service impala‐server $1"
doneservice impala‐state‐store status
service impala‐catalog status
service impala‐server status
注意,impala安装后,所有服务都已经被配置为开机自启,所以很少需要手动启动服务集群
8、web ui
访问impalad的管理界面http://node‐3:25000/
访问statestored的管理界面http://node‐3:25010/
9、命令客户端
[root@doitedu01 ~]# impala‐shell
[doitedu01:21000] default> show tables;
Query: show tables
Fetched 0 row(s) in 0.00s
三、复杂类型
hive支持最好的类型是orc, impala支持最好的类型是parquet
1、map类型查询
如果hive表中含有复杂类型,而表文件格式为TEXT,则impala不支持
如果hive表中含有复杂类型,而表文件格式为parquet,则impala支持
id,name,info
1,zs,addr:bj‐age:18‐marry:false
2,ls,addr:sh‐age:28‐marry:true
3,ww,addr:sz‐age:26‐marry:false‐inc:2000
selectid,name,info.key,info.value
fromcustom_parquet,custom_parquet.info as info;
2、数组类型查询
selectid,name,actors.*
from movie_parquet , movie_parquet.actors as actors
3、struct类型查询
selectstu_par.id,stu_info.name,stu_info.age,stu_info.sex
from stu_par
四、常用函数
1、group_concat(字段, 分隔符): 类似于hive的collect_list()
2、修改备注名称
alter table analytic_layer_zbyy_cwyy_014_cwzbbg.finance_all_targets change diff_met_date_avg diff_met_date_avg double comment "平均时长"
五、自定义函数
1、引入依赖
<dependency><groupId>org.apache.hive</groupId><artifactId>hive‐exec</artifactId><version>1.1.0</version>
</dependency>
2、编写MD5类
import org.apache.hadoop.hive.ql.exec.UDF;
import java.security.MessageDigest;public class MD5 extends UDF{public static String evaluate(String value) {StringBuilder sb = new StringBuilder();try {MessageDigest messageDigest = MessageDigest.getInstance("MD5");byte[] bytes = messageDigest.digest(value.getBytes());for (int i = 0; i < bytes.length; i++) {int tempInt = bytes[i] & 0xff;if (tempInt < 16) {sb.append(0);}sb.append(Integer.toHexString(tempInt));}}catch (Exception e) {System.out.println(e.getMessage());}return sb.toString();}
}
3、打包,并传入hdfs
hdfs dfs ‐copyFromLocal ./MyHiveUDF.jar /user/impala/user_function/
4、注册函数
create function md5(string) returns string location
'hdfs://nameservice/user/impala/user_function/MyHiveUDF.jar'
symbol='com.business.bi.udf.MD5';
大数据之Impala安装使用相关推荐
- 大数据及Linux安装
大数据及Linux安装 大数据背景 现在的社会发展相当迅速,科技发达,信息流通,使得人们之间的交流越来越密切,生活也越来越方便,在智能手机.智能穿戴设备基本普及的高科技时代的背景下,大数据应运而生. ...
- gblfy大数据技术之安装CentOS系列
gblfy大数据技术之安装CentOS系列 1检查BIOS虚拟化支持(可以先执行第二步,如果不支持再回来设置) 2新建虚拟机 3新建虚拟机向导 4创建虚拟空白光盘 5安装Linux系统对应的CentO ...
- 大数据各组件安装(数据中台搭建)
文章目录 一.基础环境配置(三台机器都操作) 1.修改主机名: 2.关闭防火墙: 3.关闭Selinux: 4.文件描述符配置: 5.关闭 THP: 6.自定义 JDK 安装: 6.1 删除默认ope ...
- Hive大数据-Hive的安装与启动---大数据之Hive工作笔记0005
然后我们再去看这个hive的安装,其实正确的学习路径应该是,首先去看 一下hadoop,因为大数据中,很多知识都是基于hadoop的,然后再去看hive,然后再去 看hbase,spark,flink ...
- 大数据之clickhouse安装部署
一.clickhouse简介 ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(D ...
- 大数据开发之安装mysql
文章目录 前言 一.安装mysql数据库(我们安装Mysql分支--MariaDB) 二.熟悉mysql常用命令,包括sql命令 三.命令专题 查询 排序 分类汇总 多表查询 limit子句用法 四. ...
- 【大数据】07 安装软件
软件的安装是一个非常重要的环节,因为人使用电脑的目的就是使用程序,如果一个系统你连软件都不会装,那你就根本不会用. Linux 的软件安装包括以下三种: 编译安装 rpm安装:包 yum安装:仓库 首 ...
- 大数据Hadoop环境安装
前言 工作场景的需要,最近开始学习起了大数据相关的东西.对于我这个初学者,大数据入门就是首先得学会Hadoop环境的安装,按照步骤如遇相关问题,请指正. Hadoop环境的安装,我是用自己电脑借助VM ...
- 管理博文Hive大数据-Mysql的安装和启动---大数据之Hive工作笔记0007
然后我们看,在给hive切换derby数据为,mysql数据库前,先去安装一下 mysql,这个已经安装了很多遍了 找到连接器,mysql的,然后 然后去看一下把这个mysql的驱动,copy到 hi ...
最新文章
- fastbert解读
- 用C实现动态结构机制
- UITableView中发现的小技巧(不断更新)
- ERROR LNK2019:无法解析的外部的符号 _sscanf或者_vsprintf
- (转)✈工欲善其事,必先利其器✔™
- 丹鸟快递承诺达到不了怎么办_谈谈2019年快递行业的竞争
- way.js - 轻量级、持久化的双向绑定JS库
- Headers and client library minor version mismatch.
- 软硬一体打天下,英特尔在 AI 上做了些什么?
- OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.
- 二路归并排序和基数排序
- steam服务器102修复,steam社区打不开错误代码102解决方法
- 单片机之串口通信 485多机通信 红外测试
- 空间梁单元C语言有限元编程,有人会有限元编程吗
- Moebius for SQL Server集群
- 云原生赋能传统行业软件离线交付
- RuntimeError: CUDA error: invalid device ordinal
- win10 你没有足够的权限执行此操作。
- 2022山东国际青少年眼睛健康产业展览会,护眼健康展9月开展
- 《经典算法》数独问题