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

hadoop CDH4.4上Impala集群安装

2013-12-31 17:04 1626 查看
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.repo sudo 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-hdfs
sudo usermod -a -G root hadoop
sudo chmod g+w /var/run/hadoop-hdfs
sudo 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 start
sudo service impala-catalog start
sudo 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: