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. D - Romantic

    The Sky is Sprite. The Birds is Fly in the Sky. The Wind is Wonderful. Blew Throw the Trees Trees ar ...

  2. 一起了解 .Net Foundation 项目 No.24

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Xamarin.Mobil ...

  3. Jmeter--Mysql数据库压力测试

    前提环境要求:首先下载合适的数据库驱动 传送门:https://mvnrepository.com/artifact/mysql/mysql-connector-java 将下载好的驱动放到Jmete ...

  4. API联调神器PostMan使用详解

    简介 创建 + 测试:创建和发送任何的HTTP请求,请求可以保存到历史中再次执行 Organize:使用Postman Collections为更有效的测试及集成工作流管理和组织APIs docume ...

  5. 7.关于一些dom&&获取元素

    1. 测试点击的是否是span 标签 <span onClick={this.select.bind(this)}>点击</span>   select( e ){  cons ...

  6. Chrome 浏览器安装 ChroPath 插件

    1.下载地址 http://www.cnplugins.com/devtool/chropath/download.html 2.安装方法 a.把下载的文件更改后缀名变为压缩包,然后解压到本地:如下图 ...

  7. iview使用之怎样给Page组件添加跳转按钮

    在项目开发过程中,我们会经常遇到使用分页的表格,然而在ivieiw中,我们通常只能使用Page组件自带的功能,如下图: 切换每页条数这些基本的功能都不说了,有时候我们需要在输入框里输入想要跳转到的页数 ...

  8. python 工具链 虚拟环境和包管理工具 pipenv

    Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, ...

  9. tensorflow1.0 矩阵相乘

    import tensorflow as tf matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf ...

  10. 2019-2020-1 20199329《Linux内核原理与分析》第八周作业

    <Linux内核原理与分析>第八周作业 一.本周内容概述: 理解编译链接的过程和ELF可执行文件格式 编程练习动态链接库的两种使用方式 使用gdb跟踪分析一个execve系统调用内核处理函 ...