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. 软件包管理rpm和yum

    rpm的使用: 安装的包相关包信息会保存在/var/lib/rpm目录下的文件中 安装参数: -i install安装 -v 显示详细信息 -h 打印####号 -V 校验软件包,会到/var/lib ...

  2. php+ajax实现拖动滚动条分批加载请求加载数据

    HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  3. Largest Rectangle in a Histogram 杭电1506

    题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=1506 Problem Description A histogram is a polygon co ...

  4. ExceptionInChainedOperatorException:flink写hbase对于null数据导致数据导致出现异常

    使用的flink版本:1.9.1 异常描述 需求: 从kafka读取一条数据流 经过filter初次筛选符合要求的数据 然后通过map进行一次条件判断再解析.这个这个过程中可能返回null或目标输出o ...

  5. vue2.x学习笔记(一)

    使用vue开发项目已经过了一段时间了,对其中的很多东西还是一知半解,于是想要系统学习一下.主要内容是参照官方中文网站https://cn.vuejs.org/v2/guide/,然后加上一些自己的理解 ...

  6. Redis入门使用 -- 个人总结

    目录 什么是Redis? Redis 与其他 key - value 数据库的对比 Redis 能干什么 Redis的安装配置 Redis启动和连接 上面开启的是非守护线程下启动(独占模式),下面我们 ...

  7. 初识phar反序列化&&复现bytectf_2019_easycms&&RSS思路

    概要 来自Secarma的安全研究员Sam Thomas发现了一种新的漏洞利用方式,可以在不使用php函数unserialize()的前提下,引起严重的php对象注入漏洞.这个新的攻击方式被他公开在了 ...

  8. [一道蓝鲸安全打卡Web分析] 文件上传引发的二次注入

    蓝鲸打卡的一个 web 文件上传引发二次注入的题解和思考 蓝鲸文件管理系统 源代码地址:http://www.whaledu.com/course/290/task/2848/show 首先在设置文件 ...

  9. 从头学pytorch(十三):使用GPU做计算

    GPU计算 默认情况下,pytorch将数据保存在内存,而不是显存. 查看显卡信息 nvidia-smi 我的机器输出如下: Fri Jan 3 16:20:51 2020 +------------ ...

  10. XSS Cheat Sheet(basics and advanced)

    XSS Cheat Sheet BASICS HTML注入 当输入位于HTML标记的属性值内或标记的外部(下一种情况中描述的标记除外)时使用.如果输入在HTML注释中,则在payload前加上&quo ...