impala的简单介绍

  • 概述

    有两个关于impala介绍的网址:

    https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_intro.html

    https://impala.apache.org/docs/build/impala-2.12.pdf

    内容基本相同



    Impala直接对存储在HDFS、HBase或Amazon Simple Storage Service (S3)中的Apache Hadoop数据提供快速的交互式SQL查询。除了使用相同的统一存储平台外,Impala还使用了

    与Apache Hive相同的元数据、SQL语法(Hive SQL)、ODBC驱动程序和用户界面(色调中的Impala查询UI)。

    这为实时或面向批处理的查询提供了一个熟悉的、统一的平台。

    Impala是大数据查询工具的补充。Impala不会替代构建在MapReduce上的批处理框架,比如Hive。Hive和其他构建在MapReduce上的框架最适合长时间运行的批处理作业,比如那些涉及提取、转换和加载(ETL)类型作业的批处理。

  • 优点

    1.数据科学家和分析师已经熟悉的SQL接口。

    2.能够在Apache Hadoop中查询大量数据(“大数据”)。

    3.在集群环境中使用分布式查询,方便扩展和利用具有成本效益的商品硬件。

    4.能够在不同的组件之间共享数据文件,而不需要复制或导出/导入步骤;例如,用Pig来写,用Hive来转换,用Impala来查询。Impala可以读写Hive表,支持使用Impala对hiveproduced数据进行分析的简单数据交换。

    5.单一系统的大数据处理和分析,因此客户可以避免昂贵的建模和ETL只是为了分析。

  • 缺点

    1.基于内存计算,对内存依赖性较大

    2.改用C++编写,意味着维护难度增大

    3.基于hive,与hive共存亡,紧耦合

    4.稳定性不如hive,但不存在数据丢失的情况

  • impala和Hive的关系

    impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。

  • impala如何和CDH一起工作



    Impala解决方案由以下组件组成:

    客户端 —— 包括Hue、ODBC客户端、JDBC客户端和Impala Shell在内的实体都可以与Impala进行交互。这些接口通常用于发出查询或完成管理任务,比如连接到Impala。

    Hive Metastore —— 存储信息的数据可用的Impala。例如,metastore让Impala知道哪些数据库是可用的,以及这些数据库的结构是什么。当您通过Impala SQL语句创建、删除和更改模式对象、将数据加载到表中等等时,相关的元数据更改将通过Impala 1.2中引入的专用目录服务自动广播到所有Impala节点。

    Impala —— 这个进程在数据节点上运行,协调和执行查询。Impala的每个实例都可以接收、计划和协调来自Impala客户端的查询。查询分布在Impala节点中,这些节点充当工作人员,执行并行查询片段。

    HBase和HDFS —— 用于查询数据的存储。



    使用Impala执行的查询处理如下:

    1.用户应用程序通过ODBC或JDBC向Impala发送SQL查询,后者提供了标准化的查询接口。用户应用程序可以连接到集群中的任何impalad。这个impalad将成为查询的协调器。

    2.Impala解析查询并分析它,以确定需要由集群中的impalad实例执行哪些任务。计划执行以获得最佳效率。

    本地impalad实例可以访问HDFS和HBase等服务来提供数据。

    3.每个impalad将数据返回给协调impalad,协调impalad将这些结果发送给客户机。

  • impala的架构及查询计划

    架构:

    impala-server:从节点。主要负责执行查询任务的计算,官方建议 impala-server与每一个datanode安装在一起

    impala-catalog:主节点。主要是存储了元数据信息在两个地方,一个在内存当中,一个在磁盘当中。impala当中的元数据管理的服务

    impala-statestore:主节点,状态存储区,主要存储了一些sql执行的进度信息,状态信息等等



    查询计划:

    fronted : 使用java来实现,负责生成查询计划

    backend : 使用的C++来实现,主要负责的是执行查询



    fronted前台的查询计划又分为两个阶段:

    第一个阶段: 生成单机版的查询计划

    第二个阶段: 生成分布式的查询计划,将单机版的查询计划,发送到其他机器上

    sql语句的优化,其实就是查询计划的优化,单机版的优化策略与分布式的优化策略是一样

  • impala/hive/spark 对比


impala的安装部署

  • 安装环境准备

    一定已经安装了Hive和Hadoop,并且在Hadoop的lib目录的native目录下要有如下文件

  • 下载impala的所有依赖包

    要根据自己CDH的版本和centOS的版本选择下载

    我下载的是 http://archive.cloudera.com/cdh5/repo-as-tarball/5.14.0/cdh5.14.0-centos7.tar.gz

  • 挂载磁盘

    移步到 【Hadoop离线基础总结】Mac版VMware Fusion虚拟机磁盘挂载 查看详细步骤

  • 上传压缩包并解压

    cd /data02/

    tar -zxvf cdh5.14.0-centos6.tar.gz

  • 制作本地yum源

    镜像源是centos当中下载相关软件的地址,我们可以通过制作我们自己的镜像源指定我们去哪里下载impala的rpm包,这里我们使用httpd这个软件来作为服务端,启动httpd的服务来作为我们镜像源的下载地址

    在第三台机器node03执行以下命令

    yum  -y install httpd
    systemctl start httpd.service
    cd /etc/yum.repos.d
    vim localimp.repo
    [localimp]
    name=localimp
    baseurl=http://node03/cdh5.14.0/
    gpgcheck=0
    enabled=1

    这里如果启动httpd报错:Job for httpd.service failed because the control process exited with error code. See “systemctl status httpd.service” and “journalctl -xe” for details. 查看这篇文章即可解决 centos7启动httpd服务失败:Job for httpd.service failed because the control process exited with error code.



    ln -s /data02/cdh/5.14.0 /var/www/html/cdh5.14.0 创建apache httpd的读取链接

    出现下图表示本地yum源制作成功



    将制作好的localimp配置文件发放到所有需要安装impala的节点上去

    scp localimp.repo  node02:$PWD
    scp localimp.repo node01:$PWD
  • 开始安装impala

    安装规划



    在node03执行以下命令

    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

    在node01和node02执行yum install impala-server -y

  • 所有节点配置impala

    1.修改hive-site.xml

    vim /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml

    添加配置

    <property>
    <name>hive.metastore.uris</name>
    <value>thrift://node03.hadoop.com:9083</value>
    </property>
    <property>
    <name>hive.metastore.client.socket.timeout</name>
    <value>3600</value>
    </property>

    2.将node03的hive安装包发送到node01,node02

    cd /export/servers/
    scp -r hive-1.1.0-cdh5.14.0/ node02:$PWD
    scp -r hive-1.1.0-cdh5.14.0/ node01:$PWD

    3.node03启动hive的metastore服务

    cd  /export/servers/hive-1.1.0-cdh5.14.0
    nohup bin/hive --service metastore &
    nohup bin/hive -- service hiveserver2 &

    注意:一定要保证mysql的服务正常启动,否则metastore的服务不能够启动



    4.所有hadoop节点修改hdfs-site.xml

    在所有节点创建文件夹 mkdir -p /var/run/hdfs-sockets

    修改所有节点的hdfs-site.xml

    vim /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml

    添加以下配置

    <property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
    </property>
    <property>
    <name>dfs.domain.socket.path</name>
    <value>/var/run/hdfs-sockets/dn</value>
    </property>
    <property>
    <name>dfs.client.file-block-storage-locations.timeout.millis</name>
    <value>10000</value>
    </property>
    <property>
    <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
    <value>true</value>
    </property>

    因为我用的是root用户,所以不用以下操作,一般在实际工作过程中都是普通用户,就需要以下操作

    创建文件夹 /var/run/hadoop-hdfs/

    chown -R hadoop:hadoop /var/run/hdfs-sockets/



    5.重启hdfs

    在node01执行

    cd /export/servers/hadoop-2.6.0-cdh5.14.0/
    sbin/stop-dfs.sh
    sbin/start-dfs.sh

    6.创建hadoop与hive的配置文件的连接

    impala的配置目录为 /etc/impala/conf

    这个路径下面需要把core-site.xmlhdfs-site.xml以及hive-site.xml拷贝到这里来,但是我们这里使用软连接的方式会更好

    所有节点都要执行

    ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
    ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
    ln -s /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml /etc/impala/conf/hive-site.xml

    7.修改impala的配置文件

    所有节点更改impala默认配置文件

    vim /etc/default/impala

    IMPALA_CATALOG_SERVICE_HOST=node03
    IMPALA_STATE_STORE_HOST=node03

    所有节点创建mysql的驱动包的软连接

    ln -s /export/servers/hive-1.1.0-cdh5.14.0/lib/mysql-connector-java-5.1.38.jar /usr/share/java/mysql-connector-java.jar

    如果提示 ln: 无法创建符号链接"/usr/share/java/mysql-connector-java.jar": 没有那个文件或目录 ,在/usr/share/目录下创建一个java文件夹即可



    所有节点修改bigtop的java路径

    vim /etc/default/bigtop-utils

    export JAVA_HOME=/export/servers/jdk1.8.0_141



    8.启动impala服务

    在node03启动

    service impala-state-store start
    service impala-catalog start
    service impala-server start



    在node01和node02启动

    service impala-server start





    用ps -ef | grep impala 查看进程

    node03应该三个



    node01和node02各有一个





    访问impalad的管理界面

    http://node03:25000/

    访问statestored的管理界面

    http://node03:25010/

    访问catalog的管理界面

    http://node03:25020

【Hadoop离线基础总结】impala简单介绍及安装部署的更多相关文章

  1. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

  2. Cloudera impala简单介绍及安装具体解释

    一.Impala简单介绍 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用同样的统一存储平台,Impala也使 ...

  3. 数据库-mysql01 简单介绍以及安装部署

    本次mysql数据库安装采用二进制安装(免安装即绿色版),数据库版本是mysql5.7.26 首先下载mysql安装包,然后上传服务器里,最后解压. 卸载centos7自带的数据库软件包: [root ...

  4. 【Hadoop离线基础总结】oozie的安装部署与使用

    目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...

  5. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  6. 【Hadoop离线基础总结】Hive调优手段

    Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...

  7. 【Hadoop离线基础总结】Sqoop常用命令及参数

    目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...

  8. Nessus简单介绍与安装

    1.Nessus简单介绍与安装 1.Nessus简介 Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它.该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库.Ne ...

  9. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

随机推荐

  1. DataGridView编辑状态自动提交

    在使用bindingSource.bindingNavigator+DataGridView修改时会发现,当你需要保存修改过后的内容,必须将光标指向另外一行,DataGridView才会将编辑过后的数 ...

  2. 小白们错过就没了!Python基础之注释&变量命名

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:DZQTesters PS:如有需要Python学习资料的小伙伴可以加 ...

  3. L24 word2vec

    词嵌入基础 我们在"循环神经网络的从零开始实现"一节中使用 one-hot 向量表示单词,虽然它们构造起来很容易,但通常并不是一个好选择.一个主要的原因是,one-hot 词向量无 ...

  4. 一篇文章快速搞懂Redis的慢查询分析

    什么是慢查询? 慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程: 发送命令 命令排队 命令执行 返回结果 在慢查询的定义中,统计比较慢的时间段指的 ...

  5. 今天开始让我们一起来学JavaScript吧!(今天先扯先别的)

    1.为什么要学习JavaScript? 首先它是web开发人员必须学习的3门语言之一: ①HTML定义了网页的内容 ②CSS描述了网页的布局: ③JavaScript网页的行为 首先JavaScrip ...

  6. PHP-fpm 远程代码执行漏洞(CVE-2019-11043)复现

    简介 9 月 26 日,PHP 官方发布漏洞通告,其中指出:使用 Nginx + php-fpm 的服务器,在部分配置下,存在远程代码执行漏洞.并且该配置已被广泛使用,危害较大. 漏洞概述 Nginx ...

  7. redis: List列表类型(四)

    list设置值(头部):lpush list one list设置值(尾部):**rpush ** list one list获取值:lrange list 0 -1 list获取指定范围的值:lra ...

  8. Golang Web入门(4):如何设计API

    摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件.总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了.在这一篇文章中,我们将从最简单的一个 ...

  9. 【转帖】Python 重复造轮子/造轮子找模子,你都应该熟读该文

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  10. SpringCloud之整合Feign

    假设提供者有如下服务接口方法 @RestController @RequestMapping("/person") public class PersonController { ...