与hive类似,impala也可以直接与hdfs和hbase库直接交互。只不过hive和其它建立在mapreduce上的框架适合需要长时间运行的批处理任务。例如:那些批量提取,转化,加载(etl)类型的job,而impala主要用于实时查询。
centos 6.4 x86_64
cdh 5.0.1
jdk1.6.0_31
集群规划为3个节点,每个节点的ip、主机名和部署的组件分配如下:
目前,cdh 5.0.1中 impala 版本为<code>1.4.0</code>,下载repo文件到 /etc/yum.repos.d/:
然后,可以执行下面的命令安装所有的 impala 组件。
但是,通常只是在需要的节点上安装对应的服务:
在 hive metastore 所在节点安装impala-state-store和impala-catalog
在 datanode 所在节点安装 impala-server 和 impala-shell
查看安装路径:
impalad的配置文件路径由环境变量<code>impala_conf_dir</code>指定,默认为<code>/usr/lib/impala/conf</code>,impala 的默认配置在/etc/default/impala,修改该文件中的<code>impala_catalog_service_host</code> 和 <code>impala_state_store_host</code>
设置 impala 可以使用的最大内存:在上面的 <code>impala_server_args</code> 参数值后面添加 <code>-mem_limit=70%</code> 即可。
如果需要设置 impala 中每一个队列的最大请求数,需要在上面的 <code>impala_server_args</code> 参数值后面添加 <code>-default_pool_max_requests=-1</code> ,该参数设置每一个队列的最大请求数,如果为-1,则表示不做限制。
在节点cdh1上拷贝<code>hive-site.xml</code>、<code>core-site.xml</code>、<code>hdfs-site.xml</code>至<code>/usr/lib/impala/conf</code>目录并作下面修改在<code>hdfs-site.xml</code>文件中添加如下内容:
同步以上文件到其他节点。
在每个节点上创建/var/run/hadoop-hdfs:
拷贝postgres jdbc jar:
impala 安装过程中会创建名为 impala 的用户和组,不要删除该用户和组。
如果想要 impala 和 yarn 和 llama 合作,需要把 impala 用户加入 hdfs 组。
impala 在执行 drop table 操作时,需要把文件移到到 hdfs 的回收站,所以你需要创建一个 hdfs 的目录 /user/impala,并将其设置为impala 用户可写。同样的,impala 需要读取 hive 数据仓库下的数据,故需要把 impala 用户加入 hive 组。
impala 不能以 root 用户运行,因为 root 用户不允许直接读。
创建 impala 用户家目录并设置权限:
查看 impala 用户所属的组:
由上可知,impala 用户是属于 imapal、hadoop、hdfs、hive 用户组的
在 cdh1节点启动:
如果impalad正常启动,可以在<code>/tmp/ impalad.info</code>查看。如果出现异常,可以查看<code>/tmp/impalad.error</code>定位错误信息。
使用<code>impala-shell</code>启动impala shell,连接 cdh1,并刷新元数据
当在 hive 中创建表之后,第一次启动 impala-shell 时,请先执行 <code>invalidate metadata</code> 语句以便 impala 识别出新创建的表(在 impala 1.2 及以上版本,你只需要在一个节点上运行 <code>invalidate metadata</code> ,而不是在所有的 impala 节点上运行)。
你也可以添加一些其他参数,查看有哪些参数:
例如,你可以在连接时候字段刷新:
使用 impala 导出数据: