hadoop CDH4.4上Impala集群安装

hadoop-001     10.168.204.55  state-store, catalog, impalad
hadoop-002     10.168.204.56  impalad
hadoop-003     10.168.204.57  impalad
hadoop-004     10.168.204.58  impalad
版本: impala 1.2.1

一、安装impala

   每个节点上都要操作
   先安装依赖包bigtop-utils
[java]  view plain copy
  1. wget -O /etc/yum.repos.d/bigtop.repo http://www.apache.org/dist/bigtop/bigtop-0.6.0/repos/centos6/bigtop.repo  
  2. sudo yum intall bigtop-utils  
   再安装impala的包
[java]  view plain copy
  1. rpm -ivh impala-1.2.1-1.p0.1346.el6.x86_64.rpm   
  2. rpm -ivh impala-server-1.2.1-1.p0.1346.el6.x86_64.rpm   
  3. rpm -ivh impala-debuginfo-1.2.1-1.p0.1346.el6.x86_64.rpm   
  4. rpm -ivh impala-state-store-1.2.1-1.p0.1346.el6.x86_64.rpm   
  5. rpm -ivh impala-shell-1.2.1-1.p0.1346.el6.x86_64.rpm   
  6. rpm -ivh impala-udf-devel-1.2.1-1.p0.1346.el6.x86_64.rpm   
  7. rpm -ivh impala-catalog-1.2.1-1.p0.1346.el6.x86_64.rpm  
所有的包都在:  http://archive.cloudera.com/impala/redhat/6/x86_64/impala/1.2.1/RPMS/x86_64/

二、配置

   1. hadoop配置

     在hdfs-site.xml添加配置
[java]  view plain copy
  1. <property>  
  2.     <name>dfs.client.read.shortcircuit</name>  
  3.     <value>true</value>  
  4. </property>  
  5. <property>  
  6.     <name>dfs.domain.socket.path</name>  
  7.     <value>/var/run/hadoop-hdfs/dn._PORT</value>  
  8. </property>  
  9. <property>  
  10.     <name>dfs.client.file-block-storage-locations.timeout</name>  
  11.     <value>3000</value>  
  12. </property>  
  13. <property>  
  14.   <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>  
  15.   <value>true</value>  
  16. </property>   

针对配置中的路径,设置可写的权限
[java]  view plain copy
  1. sudo mkdir -p /var/run/hadoop-hdfs  
  2. sudo usermod -a -G root hadoop  
  3. sudo chmod g+w /var/run/hadoop-hdfs  
  4. sudo chmod 775 /var/run/hadoop-hdfs  

重启hadoop,会出现一个错误:
[java]  view plain copy
  1. java.lang.RuntimeException: Although a UNIX domain socket path is configured as /var/run/hadoop-hdfs/dn._PORT, we cannot start a localDataXceiverServer because libhadoop cannot be loaded.  

少了libhadoop.so,这个在/user/lib/impala/lib中有,copy至 hadoop/lib/native,然后在.bashrc中export CLASSPATH,在前一篇hadoop安装中的环境变量已设置。
或者直接cp 至/usr/java/jdk1.7.0_45/jre/lib/amd64/, 结果是一样的。

2.impala配置

将hadoop 的core-site.xml  hdfs-site.xml,以及hive的 hive-site.xml 复制至 /etc/impala/conf/下,因为impala用到hive的metastore,访问hive的数据库,也需要一个授权,因为这个环境中state-store和catalog都在 10.168.204.55上,hive已配置过。 如果服务器不同,需要额外的mysql授权配置。

修改 /etc/sudoers,将impala用户设置为sudoer用户,因为进程是以impala用户启动,为了避免一些权限问题,这个当然是不安全的,但是测试环境无所谓,如果要考虑安全问题,要设置  auth-policy.ini,详见:http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_security.html
 

三、启动

hadoop-001上启动state-store,catalog,impala进程。其它服务器只启动impala进程.
[java]  view plain copy
  1. sudo service impala-state-store start  
  2. sudo service impala-catalog start  
  3. sudo service impala-server strart  
查看/var/log/impala下的日志,发现catalog有错误:
[java]  view plain copy
  1. java.lang.NoClassDefFoundError: org/datanucleus/NucleusContext  
这是因为impala与hive用的datanucleus包版本不一致造成的,查看 /usr/lib/impala/lib 和hive/lib目录,hive用的是 
[java]  view plain copy
  1. -rw-rw-r-- 1 hadoop hadoop  337012 Apr  5  2013 datanucleus-api-jdo-3.2.1.jar  
  2. -rw-rw-r-- 1 hadoop hadoop 1801810 Apr  5  2013 datanucleus-core-3.2.2.jar  
  3. -rw-rw-r-- 1 hadoop hadoop 1769726 Apr  5  2013 datanucleus-rdbms-3.2.1.jar  
而impala用的是
[java]  view plain copy
  1. -rw-r--r-- 1 root root  337012 Nov 22 15:47 datanucleus-api-jdo-3.2.1.jar  
  2. -rw-r--r-- 1 root root   16880 Nov 22 15:47 datanucleus-connectionpool-2.0.3.jar  
  3. -rw-r--r-- 1 root root 2002412 Nov 22 15:47 datanucleus-core-2.0.3.jar  
  4. -rw-r--r-- 1 root root  188159 Nov 22 15:47 datanucleus-enhancer-2.0.3.jar  
  5. -rw-r--r-- 1 root root 1225113 Nov 22 15:47 datanucleus-rdbms-2.0.3.jar  

将hive的core和rdbms包copy过去,还要修改 /usr/bin/catalogd,因为里面是hardcode,找到这两个文件,改成对应的版本号。

还有一个问题是impala的catalogd也要用到mysql driver,而 /usr/bin/catalogd是这么写的
[java]  view plain copy
  1. export MYSQL_CONNECTOR_JAR=${MYSQL_CONNECTOR_JAR:-/usr/share/java/mysql-connector-java.jar}  
为了偷懒,将hive的mysql driver 复制一份到这个路径,并改名。

到此为止,impala 配置完成,确实有一些需要注意的地方。
Impala-shell进入命令行模式,show tables一下,对比hive蜗牛一般的速度,是不是瞬间爽了。
页面查看集群工作状态:

你可能感兴趣的:(hadoop CDH4.4上Impala集群安装)