IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> impala笔记 -> 正文阅读

[大数据]impala笔记

Impala

1、Impala简介

1、优缺点

优点

  1. Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
  2. Impala抛弃了MapReduce ,impala直接通过相应的服务进程来进行作业调度,使?了类似于传统的MPP数据库技术,??提?了查询的速度。,从而省掉不必要的shuffle、sort等开销。
  3. 通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。
  4. 用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。
  5. 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销

缺点

1)对内存的依赖大,且完全依赖于hive。

2)实践中,分区超过1万,性能严重下降。

3)只能读取文本文件,而不能直接读取自定义二进制文件。

4)每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新

  1. Impala属于MPP架构,只能做到百节点级,?般并发查询个数达到20左右时,整个系统的吞吐已

? 经达到满负荷状态,在扩容节点也提升不了吞吐量,处理数据量在PB级别最佳

  1. 资源不能通过YARN统?资源管理调度,所以Hadoop集群?法实现Impala、Spark、Hive等组件

? 的动态资源共享

2、Impala和hive 区别

1、执行计划不同

? impala 执行计划表现为一颗完整的世界树,分发计划到各个impalad执行查询,能更好的并发和减少sort与 shuffle

? hive map-shuffle-reduce-map-shuffle-reduce

2、数据流不同

? impala 采用拉取方式,后续节点通过getnext主动向前一节点要数据,并返回给客户端,实时处理

? hive 推进放方式,由前一节点处理完后,推给后节点

3、使用内存不同

? impala 使用内存,内存不够时报错,不涉及io操作,insert除外

? hive 内存不够则使用外存,每一轮map-reduce结束,写入hdfs。shuffle也有io操作

4、调度不同

? impala 调度由自己完成,只有simple-shedule一种

? hive 依赖hadoop的调度策略

5、容错不同

? impala查询时无容错逻辑,直接报错,

? hive 依赖hadoop的容错能能力

6、使用面不同

? impala实时分析,不支持udf,处理的问题域由一定的限制,结合hive使用

? hive 复杂的批处理任务,数据转移任务

Impala优势总结

  1. Impala最?优点就是查询速度快,在?定数据量下;

  2. 速度快的原因:避免了MR引擎的弊端,采?了MPP数据库技术,

MPP是将任务并?的分散到多个服务器和节点上,在每个节点上计算完成后,将各?部分的

结果汇总在?起得到最终的结果

2、服务部署,环境准备

服务名称hadoop201hadoop202hadoop203
hadoopnamenodesecondnamenode
hadoopyarn
hivehivehivehive
hueHue(不能有mysql)
flume-flume-
Impalaimpala-catalogd
Impalaimpala-statestored
Impalaimpala-server(与nodedata一块)impala-serverr(与nodedata一块)impala-serverr(与nodedata一块)
HiveServer2clientHiveServer2
metastoremetastoreclientmetastore

1、impala角色

Impala??
impala-server:这个进程是Impala真正?作的进程,官?建议把impala-server安装在datanode节点,
更靠近数据(短路读取),进程名impalad
impala-statestored:健康监控??,主要监控impala-server,impala-server出现异常时告知给其它
impala-server;进程名叫做statestored
impala-catalogd :管理和维护元数据(Hive),impala更新操作;把impala-server更新的元数据通知给其
它impala-server,进程名catalogd  官?建议statestore与catalog安装在同?节点上!!

2、安装步骤

Linux123

yum install impala -y
yum install impala-server -y
yum install impala-state-store -y
yum install impala-catalog -y
yum install impala-shell -y

Linux121与Linux122

yum install impala-server -y
yum install impala-shell -y

3、修改配置

  1. 修改hive-site.xml

    1、
    <!--指定metastore地址,之前添加过可以不?添加 -->
    <property>
     <name>hive.metastore.uris</name>
     
    <value>thrift://linux121:9083,thrift://linux123:9083</value>
    </property>
    <property>
     <name>hive.metastore.client.socket.timeout</name>
     <value>3600</value>
    </property>
    
    2、
    短路读取:就是Client与DataNode属于同?节点,?需再经过?络传输数据,直接本地读取。
    要配置短路本地读,需要验证本机Hadoop是否有libhadoop.so;
    /opt/lagou/servers/hadoop-2.9.2/lib/native  含还有.so结尾的就是c++语言 缺少时不能运行的
    
    #所有节点创建?下?录
    mkdir -p /var/lib/hadoop-hdfs
    
    <!-- 打开短路读取配置-->
    <property>
     <name>dfs.client.read.shortcircuit</name>
     <value>true</value>
     </property>
    <!--这是?个UNIX域套接字的路径,将?于DataNode和本地HDFS客户机之间的通信 -->
     <property>
     <name>dfs.domain.socket.path</name>
     <value>/var/lib/hadoop-hdfs/dn_socket</value>
     </property>
    <!--block存储元数据信息开发开关 -->
    <property>
     <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
     <value>true</value>
    </property> 
    <property>
     <name>dfs.client.file-block-storage-locations.timeout</name>
     <value>30000</value>
    </property>
    
    
    

2、impala 配置

引?HDFS,Hive配置

注:所有节点都要执?此命令!
ln -s /opt/servers/hadoop-2.9.2/etc/hadoop/core-site.xml  /etc/impala/conf/core-site.xml
ln -s /opt/servers/hadoop-2.9.2/etc/hadoop/hdfs-site.xml  /etc/impala/conf/hdfs-site.xml
ln -s /opt/servers/hive-2.3.7/conf/hive-site.xml  /etc/impala/conf/hive-site.xml

所有节点更改Impala默认配置?件以及添加mysql的驱动包

vim /etc/default/impala
<!--更新如下内容 -->
IMPALA_CATALOG_SERVICE_HOST=linux123
IMPALA_STATE_STORE_HOST=linux123

#创建节点
mkdir -p /usr/share/java

ln -s /opt/servers/hive-2.3.7/lib/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar

修改bigtop的java_home路径 
vim /etc/default/bigtop-utils

export JAVA_HOME=/opt/servers/jdk1.8.0_231

注意:Apache Bigtop 是?个针对基础设施?程师和数据科学家的开源项?,旨在全?打包、测试

和配置领先的开源?数据组件/项?。Impala项?中使?到了此软件。

4、启动Impala

#linux123启动如下??
service impala-state-store start
service impala-catalog start
service impala-server start
#其余节点启动如下??
service impala-server start


ps -ef | grep impala

浏览器Web界?验证

访问impalad的管理界?
http://linux123:25000/
访问statestored的管理界?
http://linux123:25010/

注意:

启动之后所有关于Impala的?志默认都在/var/log/impala 这个路径下,

Linux203机器上? 应该有三个进程,

Linux201与Linux202机器上?只有?个进程,如果进程个数不对,去对应?录 下查看报错?志.

消除Impala影响

由于使?Yum命令安装Impala,我们选择使?yum?动进?Impala依赖的安装和处理,所以本次安装

默认会把Impala依赖的所有框架都会安装,?如Hadoop,Hive,Mysql等,为了保证我们??安装的

Hadoop等使?正常我们需要删除掉Impala默认安装的其它框架

[root@linux122 conf]# which hadoop /usr/bin/hadoop
[root@linux122 conf]# which hive /usr/bin/hive

#使?which命令 查找hadoop,hive等会发现,命令?件是/usr/bin/hadoop ??我们??安装的路
径,需要把这些删除掉,所有节点都要执?
rm -rf /usr/bin/hadoop
rm -rf /usr/bin/hdfs
rm -rf /usr/bin/hive
rm -rf /usr/bin/beeline
rm -rf /usr/bin/hiveserver2
#重新?效环境变量
source /etc/profile

jps 时出现没有名字的进程 或者process information unavailable

rm -rf /tmp/hsperfdata_*

3、架构

1、架构

在这里插入图片描述

impalad
	1、??名称为Impala Daemon,是在每个节点上运?的进程,是Impala的核?组件,进程名是
	Impalad;
	2、作?,负责读写数据?件,接收来?Impala-shell,JDBC,ODBC等的查询请求,与集群其它
	Impalad分布式并?完成查询任务,并将查询结果返回给中?协调者。
	3、为了保证Impalad进程了解其它Impalad的健康状况,Impalad进程会?直与statestore保持通
	信。
	4、Impalad服务由三个模块组成:Query Planner、Query Coordinator和Query Executor,前两个
	模块组成前端,负责接收SQL查询请求,解析SQL并转换成执?计划,交由后端执?,

statestored
	1、statestore监控集群中Impalad的健康状况,并将集群健康信息同步给Impalad,
	2、statestore进程名为statestored
catalogd
	1、Impala执?的SQL语句引发元数据发?变化时,catalog服务负责把这些元数据的变化同步给其它Impalad进程(?志验证,监控statestore进程?志)
	2、catalog服务对应进程名称是catalogd
	3、由于?个集群需要?个catalogd以及?个statestored进程,?且catalogd进程所有请求都是经过statestored进程发送,所以官?建议让statestored进程与catalogd进程安排同个节点。

2、查询流程

在这里插入图片描述

1. Client提交任务
	Client发送?个SQL查询请求到任意?个Impalad节点,会返回?个queryId?于之后的客户端操作。
2. ?成单机和分布式执?计划
SQL提交到Impalad节点之后,Analyser依次执?SQL的词法分析、语法分析、语义分析等操作;从MySQL元数据库中获取元数据,从HDFS的名称节点中获取数据地址,以得到存储这个查询相关数据的所有数据节点
	a、单机执?计划: 根据上?步对SQL语句的分析,由Planner先?成单机的执?计划,该执?计划是有PlanNode组成的?棵树,这个过程中也会执??些SQL优化,例如Join顺序改变、谓词下推等。
	b、分布式并?物理计划:将单机执?计划转换成分布式并?物理执?计划,物理执?计划由?个个的Fragment组成,Fragment之间有数据依赖关系,处理过程中需要在原有的执?计划之上加??些ExchangeNode和DataStreamSink信息等。
		b-1)Fragment : sql?成的分布式执?计划的?个?任务;
		b-2)DataStreamSink:传输当前的Fragment输出数据到不同的节点
3. 任务调度和分发
	Coordinator将Fragment(?任务)根据数据分区信息发配到不同的Impalad节点上执?。Impalad节点接收到执?Fragment请求交由Executor执?。
4. Fragment之间的数据依赖
	每?个Fragment的执?输出通过DataStreamSink发送到下?个Fragment,Fragment运?过程中不断向coordinator节点汇报当前运?状态。
5. 结果汇总
	查询的SQL通常情况下需要有?个单独的Fragment?于结果的汇总,它只在Coordinator节点运?,将多个节点的最终执?结果汇总,转换成ResultSet信息。
6. 获取结果
	客户端调?获取ResultSet的接?,读取查询结果。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 11:46:23  更:2021-07-07 11:47:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 19:04:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码