Alex 的 Hadoop 菜鸟教程: 第15课 Impala 安装使用教程

本文档是针对初学者的Impala教程,详细介绍了在Centos 6.x + CDH 5.x环境下安装和配置Impala的步骤,包括启用短路读取、JDBC支持,以及如何使用Impala-shell进行数据操作,如建表和数据加载。同时,讨论了Impala相对于Hive在实时查询上的优势,并给出了Java调用Impala的示例。
摘要由CSDN通过智能技术生成

原文地址: http://blog.csdn.net/nsrainbow/article/details/43243389  最新课程请关注原作者博客,获得更好的显示体验

声明:

  • 本文基于Centos 6.x + CDH 5.x 

硬件要求

    Impala的使用是有硬件要求的!我第一次见到有硬件要求的,那就是你的CPU必须支持SSSE3,如果你的CPU较老,不支持SSSE3 (3个S),那么你只能找别的机器来学习Impala,因为虚拟机也没有办法给你虚拟出不同的CPU。

为什么用 Impala

因为Hive 太慢了!Impala 也可以执行SQL,但是比Hive的速度快很多。为什么Impala可以比Hive快呢?因为Hive采用的是把你的sql转化成hadoop 的 MapReduce任务的代码,然后编译,打包成jar包,并分发到各个server上执行,这是一个相当慢的过程。而Impala根本就不用Hadoop的MapReduce机制,直接调用HDFS的API获取文件,在自己的内存中进行计算。
但是Impala也并不是完全比Hive好。Impala的容错机制没有Hive好,而且没有Hive那么成熟。所以一般使用以下方法来决定使用哪个
  • 如果是ETL任务使用Hive
  • 如果是实时的热查询则用Impala

安装Impala

安装

安装Impala的前提是安装了Hive,因为Impala直接使用Hive的metastore服务内存储的映射表来查询。这边不会重复的讲如何安装Hive的metastore,因为之前的课程中已经讲过,见 Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程 
官方建议为了获得最佳的性能,请在 所有的datanode上安装Impalad,也就是下面的 impala + impala-server 。在某台机器上同时装上 impala-state-store + impala-catalog
因为我只有两台机器 host1 和 host2,所以我在host1上执行
$ sudo yum install impala             # Binaries for daemons
$ sudo yum install impala-server      # Service start/stop script
$ sudo yum install impala-state-store # Service start/stop script
$ sudo yum install impala-catalog     # Service start/stop script

在host2上执行
$ sudo yum install impala             # Binaries for daemons
$ sudo yum install impala-server      # Service start/stop script

安装impala的时候会检查很多包依赖,请根据提示安装包,比如 
--> Finished Dependency Resolution
Error: Package: hadoop-libhdfs-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 (cloudera-cdh5)
           Requires: hadoop-hdfs = 2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6
           Installed: hadoop-hdfs-2.5.0+cdh5.3.0+781-1.cdh5.3.0.p0.54.el6.x86_64 (@cloudera-cdh5)
               hadoop-hdfs = 2.5.0+cdh5.3.0+781-1.cdh5.3.0.p0.54.el6
           Available: hadoop-hdfs-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 (cloudera-cdh5)
               hadoop-hdfs = 2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

这种情况下,先检查你的CDH repository ,很多情况下,并不是你没安装这个包,而是版本不对,所以建议使用 本地repo库,这样这可以保证其他组件跟hadoop之间的依赖统一,排查的步骤
  1. 检查 /etc/yum.repo.d/cloudera-cdh5.repo 是否存在
  2. 如果存在是否 enabled =1
  3. 如果enabled=1,检查url是否可以访问
  4. 如果以上都ok,那就是版本不对了,比如上面的错误是说我的 hadoop-hdfs 装的是CDH5.3 的库,而现在我本地的CDH repo是5.2 ,这一定是我以前安装hadoop-hdfs的时候没有用本地库造成的问题,现在只能重做本地库为 cdh5.3,或者暂时使用远程库,我使用了远程库

配置

把hive-site.xml, core-site.xml, hdfs-site.xml, hbase-site.xml (如果有的话) 这三个文件都拷贝到 /etc/impala/conf 下

打开 "短路读取"

所谓的短路读取,就是允许impala把一些信息存储在本地磁盘上,可以加快计算的速度。
修改 拷贝来的 /etc/impala/conf/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._PORT</value>
</property>

<property>
    <name>dfs.client.file-block-storage-locations.timeout.millis</name>
    <value>10000</value>
</property>
注意:那个 _P
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值