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. vue中 使用SVG实现鼠标点击绘图 提示鼠标移动位置 显示绘制坐标位置

    <div class="div1"> <svg id="svg1" xmlns="http://www.w3.org/2000/sv ...

  2. Laravel joinSub 子查询的写法

    $subQuery = $model::query() ->from('table1 as a') ->getQuery(); $query = $model::query() -> ...

  3. JavaWeb后端jsp之增删改查

    今日主题:JavaWeb后端jsp之增删改查 实体类: Student.java: package cn.itcast.model.entity; public class Student { pri ...

  4. JDBC中的时间处理

    MySQL中常用的时间类有: java.sql.Date, Time, Timestamp 用的比较多的是ava.sql.Date和TimeStamp: 先看表结构 CREATE TABLE `t_u ...

  5. 数组的forEach和map和for方法的区别

    一.定义 foreach():  从头到尾遍历数组,为每个元素调用指定的函数. map():  将调用的数组的每个元素传递给指定的函数,并返回一个数组,他包含该函数的返回值. 传递的函数是 forea ...

  6. Django入门2:路由系统

    1.单一路由对应 url(r'^index/', views.index), # FBV url(r'^home/', views.Home.as_view()), # CBV 2.基于正则的路由 u ...

  7. 移动App性能测评与优化1.4.4 多进程应用

    1.4.4 多进程应用 根据上一节中的描述,当一个进程结束后,它所占用的共享库内存将会被其他仍然使用该共享库的进程所分担,共享库消耗的物理内存并不会减少.实际上,对于所有共享使用了这个库的应用,Pss ...

  8. Shiro踩坑记(一):关于shiro-spring-boot-web-starter自动注解无法注入authorizer的问题

    一)问题描述: 我在一个Spring的项目中使用shiro搭建权限控制框架.主要通过shiro-spring-boot-web-starter包快速集成Shiro.但是项目无法启动,报没有author ...

  9. falsk-web 表单

    web 表单 回顾 在上一章节中,我们定义了一个简单的模板,使用占位符来虚拟了暂未实现的部分,比如用户以及文章等. 在本章我们将要讲述应用程序的特性之一–表单,我们将会详细讨论如何使用 web 表单. ...

  10. 几个加速Swift开发的小tip

    又是周五了,周末不要浪,一起学点Swift!本周再次为大家带来了一些Swift的小技巧,都是些奇淫巧计,不知道也无妨,但Swift最吸引我的一点就是它的简洁易用.主要内容有: private(set) ...