您的位置:首页 > 运维架构

hadoop CDH4.4上Impala集群安装

2015-02-26 11:13 211 查看
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
plaincopy





wget -O /etc/yum.repos.d/bigtop.repo http://www.apache.org/dist/bigtop/bigtop-0.6.0/repos/centos6/bigtop.repo
sudo yum intall bigtop-utils

再安装impala的包

[java] view
plaincopy





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添加配置

[java] view
plaincopy





<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>

针对配置中的路径,设置可写的权限

[java] view
plaincopy





sudo mkdir -p /var/run/hadoop-hdfs

sudo usermod -a -G root hadoop

sudo chmod g+w /var/run/hadoop-hdfs

sudo chmod 775 /var/run/hadoop-hdfs

重启hadoop,会出现一个错误:

[java] view
plaincopy





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
plaincopy





sudo service impala-state-store start

sudo service impala-catalog start

sudo service impala-server strart

查看/var/log/impala下的日志,发现catalog有错误:

[java] view
plaincopy





java.lang.NoClassDefFoundError: org/datanucleus/NucleusContext

这是因为impala与hive用的datanucleus包版本不一致造成的,查看 /usr/lib/impala/lib 和hive/lib目录,hive用的是

[java] view
plaincopy





-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用的是

[java] view
plaincopy





-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是这么写的

[java] view
plaincopy





export MYSQL_CONNECTOR_JAR=${MYSQL_CONNECTOR_JAR:-/usr/share/java/mysql-connector-java.jar}

为了偷懒,将hive的mysql driver 复制一份到这个路径,并改名。

到此为止,impala 配置完成,确实有一些需要注意的地方。
Impala-shell进入命令行模式,show tables一下,对比hive蜗牛一般的速度,是不是瞬间爽了。
页面查看集群工作状态:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: