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安装使用相关推荐

  1. 大数据及Linux安装

    大数据及Linux安装 大数据背景 现在的社会发展相当迅速,科技发达,信息流通,使得人们之间的交流越来越密切,生活也越来越方便,在智能手机.智能穿戴设备基本普及的高科技时代的背景下,大数据应运而生. ...

  2. gblfy大数据技术之安装CentOS系列

    gblfy大数据技术之安装CentOS系列 1检查BIOS虚拟化支持(可以先执行第二步,如果不支持再回来设置) 2新建虚拟机 3新建虚拟机向导 4创建虚拟空白光盘 5安装Linux系统对应的CentO ...

  3. 大数据各组件安装(数据中台搭建)

    文章目录 一.基础环境配置(三台机器都操作) 1.修改主机名: 2.关闭防火墙: 3.关闭Selinux: 4.文件描述符配置: 5.关闭 THP: 6.自定义 JDK 安装: 6.1 删除默认ope ...

  4. Hive大数据-Hive的安装与启动---大数据之Hive工作笔记0005

    然后我们再去看这个hive的安装,其实正确的学习路径应该是,首先去看 一下hadoop,因为大数据中,很多知识都是基于hadoop的,然后再去看hive,然后再去 看hbase,spark,flink ...

  5. 大数据之clickhouse安装部署

    一.clickhouse简介 ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(D ...

  6. 大数据开发之安装mysql

    文章目录 前言 一.安装mysql数据库(我们安装Mysql分支--MariaDB) 二.熟悉mysql常用命令,包括sql命令 三.命令专题 查询 排序 分类汇总 多表查询 limit子句用法 四. ...

  7. 【大数据】07 安装软件

    软件的安装是一个非常重要的环节,因为人使用电脑的目的就是使用程序,如果一个系统你连软件都不会装,那你就根本不会用. Linux 的软件安装包括以下三种: 编译安装 rpm安装:包 yum安装:仓库 首 ...

  8. 大数据Hadoop环境安装

    前言 工作场景的需要,最近开始学习起了大数据相关的东西.对于我这个初学者,大数据入门就是首先得学会Hadoop环境的安装,按照步骤如遇相关问题,请指正. Hadoop环境的安装,我是用自己电脑借助VM ...

  9. 管理博文Hive大数据-Mysql的安装和启动---大数据之Hive工作笔记0007

    然后我们看,在给hive切换derby数据为,mysql数据库前,先去安装一下 mysql,这个已经安装了很多遍了 找到连接器,mysql的,然后 然后去看一下把这个mysql的驱动,copy到 hi ...

最新文章

  1. fastbert解读
  2. 用C实现动态结构机制
  3. UITableView中发现的小技巧(不断更新)
  4. ERROR LNK2019:无法解析的外部的符号 _sscanf或者_vsprintf
  5. (转)✈工欲善其事,必先利其器✔™
  6. 丹鸟快递承诺达到不了怎么办_谈谈2019年快递行业的竞争
  7. way.js - 轻量级、持久化的双向绑定JS库
  8. Headers and client library minor version mismatch.
  9. 软硬一体打天下,英特尔在 AI 上做了些什么?
  10. OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.
  11. 二路归并排序和基数排序
  12. steam服务器102修复,steam社区打不开错误代码102解决方法
  13. 单片机之串口通信 485多机通信 红外测试
  14. 空间梁单元C语言有限元编程,有人会有限元编程吗
  15. Moebius for SQL Server集群
  16. 云原生赋能传统行业软件离线交付
  17. RuntimeError: CUDA error: invalid device ordinal
  18. win10 你没有足够的权限执行此操作。
  19. 2022山东国际青少年眼睛健康产业展览会,护眼健康展9月开展
  20. 《经典算法》数独问题

热门文章

  1. liunx GHOST clonezilla(再生龙)UltraISO刻录问题
  2. Java单例模式--懒汉式和饿汉式(Demo)
  3. 百度网盘如何免费提速?
  4. 一起学习GC算法(图文详解)
  5. capslock亮灯是小写_键盘上的CapsLock灯亮表示是()。
  6. Microsoft Project 2010简体中文专业版+注册密钥
  7. 对话 CTO | 听码隆科技 CTO 码特讲计算机视觉技术赋能全球零售行业
  8. 使用win2d实现萤火虫粒子效果
  9. qemu arm虚拟机联网
  10. 一文带你搞懂React路由(详解版)