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:
- 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蜗牛一般的速度,是不是瞬间爽了。
页面查看集群工作状态: