impala基于CHD,提供针对HDFS,hbase的实时查询,查询语句类似于hive
包括几个组件
Clients:提供Hue, ODBC clients, JDBC clients, and the Impala Shell与impala交互查询
Hive Metastore:保存数据的元数据,让impala知道数据的结构等信息
Cloudera Impala:协调查询在每个datanode上,分发并行查询任务,并将查询返回客户端
HBase and HDFS:存储数据

环境
hadoop-2.0.0-cdh4.1.2
hive-0.9.0-cdh4.1.2
impala利用yum安装
增加yum库
[cloudera-impala]
name=Impala
baseurl=http://archive.cloudera.com/impala/redhat/5/x86_64/impala/1/
gpgkey = http://archive.cloudera.com/impala/redhat/5/x86_64/impala/RPM-GPG-KEY-cloudera
gpgcheck = 1
加至/etc/yum.repos.d目录下

注意cdh与hive及impala需要版本匹配,具体去impala官网去查一下
需要内存比较大,需要64位机器(推荐有点忘了是否支持32位),支持的linux版本也有要求
http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/PDF/Installing-and-Using-Impala.pdf
安装CHD4
http://archive.cloudera.com/cdh4/cdh/4/
cdh与hive都可以在这找到

三台机器
master安装 namenode,secondnamenode,ResourceManager, impala-state-store,impala-shell,hive
slave1安装 datanode,nodemanager,impala-server, impala-shell
slave2安装  datanode,nodemanager,impala-server, impala-shell

hadoop配置
在master机器上配置
$HADOOP_HOME/etc/hadoop中的core-site.xml增加

<property>
 <name>io.native.lib.available</name>
 <value>true</value>
</property>
<property>
 <name>fs.default.name</name>
 <value>hdfs://master:9000</value>
 <description>The name of the default file system.Either theliteral string "local" or a host:port for NDFS.</description>
 <final>true</final>
</property>

$HADOOP_HOME/etc/hadoop中的hdfs-site.xml增加

<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:/home/hadoop/cloudera/hadoop/dfs/name</value>
 <description>Determines where on the local filesystem the DFS namenode should store the name table.If this is a comma-delimited list ofdirectories,then name table is replicated in all of the directories,forredundancy.</description>
 <final>true</final>
</property>
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/home/hadoop/cloudera/hadoop/dfs/data</value>
 <description>Determines where on the local filesystem an DFS datanode should store its blocks.If this is a comma-delimited list ofdirectories,then data will be stored in all named directories,typically ondifferent devices.Directories that do not exist are ignored.
  </description>
 <final>true</final>
</property>
<property>
    <name>dfs.http.address</name>
    <value>fca-vm-arch-proxy1:50070</value>
</property>
<property>
 <name>dfs.replication</name>
 <value>2</value>
</property>
<property>
   <name>dfs.secondary.http.address</name>
   <value>fca-vm-arch-proxy1:50090</value>
 </property>
<property>
 <name>dfs.permission</name>
 <value>false</value>
</property>

$HADOOP_HOME/etc/hadoop中的mapred-site.xml增加

<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
</property>
<property>
 <name>mapreduce.job.tracker</name>
 <value>hdfs://fca-vm-arch-proxy1:9001</value>
 <final>true</final>
</property>
<property>
 <name>mapreduce.map.memory.mb</name>
 <value>1536</value>
</property>
<property>
 <name>mapreduce.map.java.opts</name>
 <value>-Xmx1024M</value>
</property>
<property>
 <name>mapreduce.reduce.memory.mb</name>
 <value>3072</value>
</property>
<property>
 <name>mapreduce.reduce.java.opts</name>
 <value>-Xmx2560M</value>
</property>
<property>
 <name>mapreduce.task.io.sort.mb</name>
 <value>512</value>
</property>
<property>
 <name>mapreduce.task.io.sort.factor</name>
 <value>100</value>
</property>
<property>
 <name>mapreduce.reduce.shuffle.parallelcopies</name>
 <value>50</value>
</property>

$HADOOP_HOME/etc/hadoop/hadoop-env.sh增加
export JAVA_HOME=/jdk1.6.0_22

系统环境变量
$HOME/.bash_profile增加
export JAVA_HOME=/jdk1.6.0_22
export JAVA_BIN=${JAVA_HOME}/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/cloudera/hadoop-2.0.0-cdh4.1.2
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
export HADOOP_LIB=${HADOOP_HOME}/lib
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

source $HOME/.bash_profile使变量生效

yarn配置

$HADOOP_HOME/etc/hadoop/yarn-site.xml中增加

<property>
 <name>yarn.resourcemanager.address</name>
 <value>fca-vm-arch-proxy1:9002</value>
</property>
<property>
 <name>yarn.resourcemanager.scheduler.address</name>
 <value>fca-vm-arch-proxy1:9003</value>
</property>
<property>
 <name>yarn.resourcemanager.resource-tracker.address</name>
 <value>fca-vm-arch-proxy1:9004</value>
</property>
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce.shuffle</value>
</property>
<property>
 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

$HADOOP_HOME/etc/hadoop/slaves增加
slave1
slave2

将master上的CHD目录及.bash_profile拷贝到slave1,slave2,并配置环境变量,并且配置好ssh无密码登陆,网上很多不详细说了

启动hdfs和yarn

以上步骤都执行完成后,用hadoop用户登录到master机器依次执行:
hdfs namenode -format
start-dfs.sh
start-yarn.sh
通过jps命令查看:
master成功启动了NameNode、ResourceManager、SecondaryNameNode进程;
slave1,slave2成功启动了DataNode、NodeManager进程。

hive安装
hive只需要在master上安装因为impala-state-store需要hive读取元数据,hive又依赖于关系统型数据库(mysql)所以安装mysql
下载hive
http://archive.cloudera.com/cdh4/cdh/4/

解压缩hive

$HOME/.bash_profile增加
export HIVE_HOME=/home/hadoop/hive-0.9.0-cdh4.1.2
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HIVE_HOME}/bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_LIB=$HIVE_HOME/lib

source $HOME/.bash_profile使环境变量生效
在hive/lib目录下加入mysql-connector-java-5.1.8.jar

$HIVE_HOME/conf/hive.site.xml增加
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://master:9083</value>
  <description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://master:3306/hive?createDatabaseIfNoExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
  <description>username to use against metastore database</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
  <description>password to use against metastore database</description>
</property>
<property>
  <name>hive.security.authorization.enabled</name>
  <value>false</value>
  <description>enable or disable the hive client authorization</description>
</property>
<property>
  <name>hive.security.authorization.createtable.owner.grants</name>
  <value>ALL</value>
  <description>the privileges automatically granted to the owner whenever a table gets created.
   An example like "select,drop" will grant select and drop privilege to the owner of the table</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>${user.home}/hive-logs/querylog</value>
</property>
由于hive metstore我们是安装在远程节点上的所以hive.metastore.local是false
hive.metastore.uris设置远程连接metstore

验证成功状态
完成以上步骤之后,验证hive安装是否成功

在master命令行执行hive,并输入”show tables;”,出现以下提示,说明hive安装成功:
>hive
hive> show databases;
ok
Time taken: 18.952 seconds

impala安装

master上安装 impala-state-store
sudo yum install impala-state-store
master上安装 impala-shell
sudo yum install impala-shell

配置impala
修改/etc/default/impala

IMPALA_STATE_STORE_HOST=192.168.200.114
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala

IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"
IMPALA_SERVER_ARGS=" \
    -log_dir=${IMPALA_LOG_DIR} \
    -state_store_port=${IMPALA_STATE_STORE_PORT} \
    -use_statestore \
    -state_store_host=${IMPALA_STATE_STORE_HOST} \
    -be_port=${IMPALA_BACKEND_PORT}"

ENABLE_CORE_DUMPS=false

LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
 MYSQL_CONNECTOR_JAR=/home/hadoop/cloudera/hive/hive-0.9.0-cdh4.1.2/lib/mysql-connector-java-5.1.8.jar
 IMPALA_BIN=/usr/lib/impala/sbin
 IMPALA_HOME=/usr/lib/impala
 HIVE_HOME=/home/hadoop/cloudera/hive/hive-0.9.0-cdh4.1.2
# HBASE_HOME=/usr/lib/hbase
 IMPALA_CONF_DIR=/usr/lib/impala/conf
 HADOOP_CONF_DIR=/usr/lib/impala/conf
 HIVE_CONF_DIR=/usr/lib/impala/conf
# HBASE_CONF_DIR=/etc/impala/conf

拷贝hadoop的core-site.xml,hdfs-site.xml,hive的hive-site.xml到/usr/lib/impala/conf中
core-site.xml增加

<property>
   <name>dfs.client.read.shortcircuit</name>
   <value>true</value>
</property>
<property>
<name>dfs.client.read.shortcircuit.skip.checksum</name>
<value>false</value>
</property>

hdfs-site.xml增加,hadoop的hdfs-site.xml也增加

<property>
   <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
   <value>true</value>
</property>
<property>
   <name>dfs.datanode.data.dir.perm</name>
   <value>750</value>
</property>
<property>
   <name>dfs.block.local-path-access.user</name>
   <value>hadoop</value>
</property>
<property>
  <name>dfs.client.read.shortcircuit</name>
  <value>true</value>
</property>
<property>
    <name>dfs.client.file-block-storage-locations.timeout</name>
    <value>3000</value>
</property>
<property>
<name>dfs.client.use.legacy.blockreader.local</name>
<value>true</value>
</property>

拷贝mysql-connector-java-5.1.8.jar到/usr/lib/impala/lib下
拷贝mysql-connector-java-5.1.8.jar到/var/lib/impala下
拷贝/usr/lib/impala/lib/*.so*到$HADOOP_HOME/lib/native/
slave1,slave2上安装
sudo yum install impala
sudo yum install impala-server
sudo yum install impala-shell
master上的hive-site.xml,core-site.xml,hdfs-site.xml拷贝到slaver1,slaver2上,jar的拷贝与master一致

启动hive metastore
在master上执行hive --service metastore

启动impala statestore
在master上执行statestored -log_dir=/var/log/impala -state_store_port=24000

在slave1,slave2上启动impalad
sudo /etc/init.d/impala-server start

impala查看/var/log/impala/statestored.INFO是否成功 statestored.ERROR查看错误
注意先要在master启动hive metastore,impala statesored,再在slave1,slave2启动impalad-server

测试是否成功

master上执行
impala-shell
[Not connected] >connect slave1;
[slave1:21000] > use hive;
Query: use hive
[slave1:21000] >show tables;
ok
没有错误说成功
如果在slave1上插入数据需要在slave2上refresh 表名才能同步数据,而不是网上说的refresh,后面必须加表名。
如果不是shell执行操作,应该可以同步数据,没测试过。

注意事项

impala在插入数据时可以会出错

hdfsOpenFile(hdfs://fmaster:9000/user/hive/warehouse/test/.2038125373027453036......

是权限问题,因为我们是用sudo (root用户)启动的impala但是test表hadoop用户有增删改查的权限,但是root没有

解决方法

hdfs dfs -chmod -R 777 /user/hive/warehouse/test

CHD4 impala安装配置的更多相关文章

  1. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  2. kudu介绍及安装配置

    kudu介绍及安装配置 介绍 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器.Kudu 共享 Hadoop 生态系统应用的常见技术特性: 它在 commodity har ...

  3. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  4. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  5. ADFS3.0与SharePoint2013安装配置(原创)

    现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...

  6. Hadoop的学习--安装配置与使用

    安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...

  7. redis的安装配置

    主要讲下redis的安装配置,以及以服务的方式启动redis 1.下载最新版本的redis-3.0.7  到http://redis.io/download中下载最新版的redis-3.0.7 下载后 ...

  8. Windows环境下的NodeJS+NPM+Bower安装配置

    npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...

  9. ubuntu kylin 14.04安装配置MongoDB v2.6.1(转)

    1.获取最新版本 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz 2.解压并进入bin目录 tar zxvf mongo ...

随机推荐

  1. easyUI的combobox实现级联

    先简介下combobox: easyUI重写了select,取而代之的是combobox,有例如以下几种方式能够创建一个combobox 1.使用select标签,并加上class="eas ...

  2. 自己写CPU第五级(5)——测试逻辑、实现移动和空指令

    我们会继续上传新书<自己写CPU>(未公布),今天是19片,我每星期试试4 5.6 測试程序1--測试逻辑操作实现效果 编写例如以下測试程序用于检验逻辑操作指令是否实现正确,文件名称命名为 ...

  3. LeetCodeOJ. Maximum Depth of Binary Tree

    见问题: https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/ 主题概述 Given a binary tree, find i ...

  4. Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用

    原文:Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用 “/vs2005”应用程序中的服务器错误.--------------------------- ...

  5. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  6. 百度地图API 添加自定义标注 多点标注

    原文:百度地图API 添加自定义标注 多点标注 分四个文件 location.php map.css 图片 数据库 数据库配置自己改下 -------------------------------- ...

  7. Java数据结构与算法(2) - ch03排序(冒泡、插入和选择排序)

    排序需要掌握的有冒泡排序,插入排序和选择排序.时间为O(N*N). 冒泡排序: 外层循环从后往前,内存循环从前往后到外层循环,相邻数组项两两比较,将较大的值后移. 插入排序: 从排序过程的中间开始(程 ...

  8. C---数组名作函数参数

    数组名可以作函数的实参和形参.如: #include<stdio.h> int main(void) { ]; f(array,); } f(int arr[],int n) { } ar ...

  9. MapGuide应用程序演示样例——你好,MapGuide!

    图 3‑4显示了基于MapGuide的Web应用程序的开发流程,整个开发流程能够分为五个阶段.图中,矩形代表任务,椭圆形被任务使用的或被任务创建的实体,箭头代表数据流. 1) 载入文件类型的数据,配置 ...

  10. IT见解

    IT见解 北京海淀区  2014-10-18   张俊浩 *域名的市值在走低,因其功能被新浪.腾讯微博.微信大V这种账号所代替 *小米将自己定位为互联网公司,而不是手机公司 *手机不远的未来会成为公共 ...