Cloudera Manager和CDH4.1的安装
刚开始安装时,觉得是各种麻烦。现在反思以下,觉得这个过程也不是太麻烦。下面我就把我在整个安装过程中,叙述如下,如果整个过程理解有错或不到位的地方,欢迎咱们互相交流,共同进步。
在开启服务的过程中,其他的服务都正常开启了,但是最关键的我需要的服务却一直显示不良状态,如下图:
Impala没正常启动,这是我这次研究的重中之重。出现问题,就开始找问题,后来发现是impala和数据库(我用的是mysql)没连接成功。下面着重讲述下配置mysql连接impala。
Impala的运行需要有配置了Mysql或PostgreSQL的hive metastore,hive本身支持的derby数据库,impala不支持。
一、配置远程数据库作为Hive Mestastore。
A:安装MySQL JDBC连接器,从'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz下载连接器,并把解压后的mysql-connector-java-5.1.22-bin.jar文件拷贝至/usr/lib/hive/lib下。
B:MySQL管理员需要用hive-schema-0.9.0.mysql.sql来建立初始数据库:
$ mysql –u root –p mysql > CREATE DATABASE hivemetastoredb; mysql > USE hivemetastoredb; mysql > SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/ hive-schema-0.9.0.mysql.sql; mysql > CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘hive’; mysql > CREATE ALL PRIVILEGES ON hivemetastoredb.* TO ‘hive’@’%’ WITH GRANT OPTION; mysql > FLUSH PRIVILEGES; mysql > QUIT; |
C:配置mysql用utf8作为默认的字符编码。
$ vim /etc/my.cnf 在[mysqld]下加入 Default-character-set=utf8 |
这是因为,impala去连接mysql时所用到的连接字符串为:URL="jdbc:mysql://localhost:3306/hivemetastoredb?useUnicode=true&characterEncoding=UTF-8”,它默认用的就是utf8。
二、新增Impala服务
进入cloudera manager管理界面,新增impala服务,点击impala,点击配置,可看到如下界面:
在这个配置里面,需要配置如下参数:
Property |
Value |
DataNode Local Path Access Users dfs.block.local-path-access.user |
impala |
DataNode Data Directory Permissions dfs.datanode.data.dir.perm |
755 |
Enable HDFS Block Metadata API dfs.datanode.hdfs-blocks-metadata.enabled |
true |
Enable HDFS Short Circuit Read dfs.client.read.shortcircuit |
true |
Hive Metastore的配置如上图所示,数据库连接密码:hive。
三、配置好impala后,点击重新启动impala。启动成功后可以看到如下界面:
两个服务都完成,才算impala启动成功。
这个配置是为了让Hue Beeswax网站接口来执行Impala语句。修改/etc/hue/hue.ini,如下内容:
[beeswax] beeswax_server_host=192.168.20.195 beeswax_server_port=8003 |
重启Hue服务。至此,impala这个服务也算是正常启动了。
最后说明一下,这次配置遇到的问题及解决方法。
问题一:无法安装hadoop-hdfs包。
如下图所示:
图中说明的错误是:事务验证出错,后面的信息显示了是版本冲突问题。也就是说,本来电脑里面已经有装了hadoop-1.0.3现在和cloudera的hadoop-hdfs-2.0.0冲突,导致hadoo-hdfs无法安装,也就使得安装失败,又得重新来一次了,悲剧啊。
解决问题,我找到了系统里安装hadoop-1.0.3的所有包,然后把它们全部删掉,包括安装的目录。
$ rpm –qa | grep –i hadoop-1.0.3 hadoop-1.0.3+20.38283-1.el6.x86_64 $ rpm –ql hadoop-1.0.3+20.38283-1.el6.x86_64(查找安装的位置) $ rpm –e hadoop-1.0.3+20.38283-1.el6.x86_64(卸载) |
卸载过程中,可能会有包依赖,没关系,继续按照上述方法把他们全部删光,重新安装就行啦。
问题二:启动impala时,impala daemon无法启动,查看日志出现如下问题。
这个问题,说是连接到mysql被禁止,但是我用java自己做了个程序去连接mysql没有问题,很奇怪,
javax.jdo.JDOFatalDataStoreException: Access denied for user 'hive'@'localhost' (using password: YES),最主要是这句话,我本来连接数据库是,用root登录mysql建立了个新用户hive,然后不使用密码,同时在impala中的配置目录里,默认数据库用户hive登录也是不需要密码的,但是却始终连不上,后来经过分析这句话,using password:YES,也就是说,本来不需要密码,你却用了密码登陆到mysql,这就有问题了,也就是说,虽然配置里的密码是空的,但是impala默认还是以有密码的形式登录到mysql,这样连接就一直被禁止了。解决的方案是:删掉hive用户,建立一个用户名和密码都是hive的用户接着,把配置里密码也输入hive,问题终于解决了。
问题三:如下图,这个问题不大,没什么影响。
安装到此算告一段落了,但是还有很多问题需要让我去探究,cloudera这么一个开源的,强大的公司,做的产品也是如此之美,我才只是初涉浅滩,摆在目前还有很多问题不能解决,如下:
1:impa为什么要依赖hive呢,又为何要独立配置数据库,
2:impalad和impala-state-store之间的具体关系是怎样的。
3:impala可以直接操作hdfs,那为什么启动服务时,它有依赖于HBase;
4:现在只是配置了伪分布式,在大型集群中,又该如何操作它们。
--------------------------------------------------------------------------------------------------------------------------------------本文说明得有些简陋,希望得到高手们的指点,谢谢。
--------------------------------------------------------------------------------------------------------------------------------------草原战狼 2012/11/16 16:42