hadoop CDH4.4上Impala集群安装

来源:互联网 发布:淘宝店经营地址怎么写 编辑:程序博客网 时间:2024/06/09 17:05


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
wget -O /etc/yum.repos.d/bigtop.repo http://www.apache.org/dist/bigtop/bigtop-0.6.0/repos/centos6/bigtop.reposudo yum intall bigtop-utils
   再安装impala的包
rpm -ivh impala-1.2.1-1.p0.1346.el6.x86_64.rpm rpm -ivh impala-server-1.2.1-1.p0.1346.el6.x86_64.rpm rpm -ivh impala-debuginfo-1.2.1-1.p0.1346.el6.x86_64.rpm rpm -ivh impala-state-store-1.2.1-1.p0.1346.el6.x86_64.rpm rpm -ivh impala-shell-1.2.1-1.p0.1346.el6.x86_64.rpm rpm -ivh impala-udf-devel-1.2.1-1.p0.1346.el6.x86_64.rpm 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添加配置
<property>    <name>dfs.client.read.shortcircuit</name>    <value>true</value></property><property>    <name>dfs.domain.socket.path</name>    <value>/var/run/hadoop-hdfs/dn._PORT</value></property><property>    <name>dfs.client.file-block-storage-locations.timeout</name>    <value>3000</value></property><property>  <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>  <value>true</value></property> 

针对配置中的路径,设置可写的权限
sudo mkdir -p /var/run/hadoop-hdfssudo usermod -a -G root hadoopsudo chmod g+w /var/run/hadoop-hdfssudo chmod 775 /var/run/hadoop-hdfs

重启hadoop,会出现一个错误:
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进程.
sudo service impala-state-store startsudo service impala-catalog startsudo service impala-server strart
查看/var/log/impala下的日志,发现catalog有错误:
java.lang.NoClassDefFoundError: org/datanucleus/NucleusContext
这是因为impala与hive用的datanucleus包版本不一致造成的,查看 /usr/lib/impala/lib 和hive/lib目录,hive用的是 
-rw-rw-r-- 1 hadoop hadoop  337012 Apr  5  2013 datanucleus-api-jdo-3.2.1.jar-rw-rw-r-- 1 hadoop hadoop 1801810 Apr  5  2013 datanucleus-core-3.2.2.jar-rw-rw-r-- 1 hadoop hadoop 1769726 Apr  5  2013 datanucleus-rdbms-3.2.1.jar
而impala用的是
-rw-r--r-- 1 root root  337012 Nov 22 15:47 datanucleus-api-jdo-3.2.1.jar-rw-r--r-- 1 root root   16880 Nov 22 15:47 datanucleus-connectionpool-2.0.3.jar-rw-r--r-- 1 root root 2002412 Nov 22 15:47 datanucleus-core-2.0.3.jar-rw-r--r-- 1 root root  188159 Nov 22 15:47 datanucleus-enhancer-2.0.3.jar-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是这么写的
export MYSQL_CONNECTOR_JAR=${MYSQL_CONNECTOR_JAR:-/usr/share/java/mysql-connector-java.jar}
为了偷懒,将hive的mysql driver 复制一份到这个路径,并改名。

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


微博:http://weibo.com/kingjames3

0 0
原创粉丝点击