Cloudera可以简化Hadoop的安装配置过程,自动在集群节点上安装hadoop相关组件,创建用户。

所有机器上一定要安装好Perl包。

 

cloudera manager free是个免费的版本,对普通的应用也够了。  安装比较简单,下载相应的.bin文件运行即可。  不过DNS要配好,如果不用DNS服务器解析每个集群主机,那么每个集群机器上面hosts文件都要准备好。

 

安装好后用web 界面建立集群,各台机器上即远程安装CDH

安装过程默认都是到网上下载rpm包,容易超时。比较烦人。

可以自键repo, 本来觉得太复杂,后来试了。 其实方法也不难, 把CDH, cloudera-manager-相关的RPM都存放在某一机器上,运行createrepo(要安装此yum包先), 然后用httpd吧这个目录发布出去就可以。

但是每个host上都要创建myrepo.repo文件,指向此httpd的repo URL, 还要记住repo文件里加一句 cost=300,这样才可以优先从这里下载rpm包。

如果是用parcel安装,你们第一步安装好之后,只是在各机器上安装了cloudera-agent, 下一步才是安装CDH各组件。

 

在安装CDH3的 默认情况下,配置是这样的

Hbase, habse.rootfir 存放在/hbase

datanode, dfs.data.dir 存放在/dfs/dn

Namenode, dfs.name.dir 存放在 /dfs/nn

Jobtracker 本地数据目录 mapred.local.dir 存放在 /mapred/jt

Tasktracker 本地数据目录mapred.local.dir 存放在 /mapred/local

Secondary NAme node, fs.checkpoint.dir 存放在 /dfs/snn

Hive, 仓库目录  hive.metastore.warehouse.dir 存放在 /user/hive/warehouse;端口 hive.metastore.port  9083

Oozie服务器 数据目录 /var/lib/oozie/data

zookeeper dataDir datalogDir 都存放在 /var/zookeeper

选择默认。

/dfs 和/mapred 都是本地磁盘上的目录,实际环境中也许应该事先建好目录,mount在单独的一块磁盘上。

安装好以后是这样的界面

131957729.gif

服务相关的用户都会自动创建好。

启动后默认的端口:

master上面 

50060  task tracker status

50030  mapreduce 管理界面

50070  NameNode管理界面

8020  DFS系统

 

安装好了以后会发现和自己下载apache 的 tar包不一样, 可执行文件和配置文件被分别放到了不同目录。 这个给人感觉不是很好, 维护起来不太便捷。 conf目录下的master和slaves文件也没有了,很奇怪! 不过可能因为这两个文件只是start-???和stop-???的脚本里面用到,CDH是由数据库里的信息管理集群,启动停止都有CDHweb界面操作,所以就不用了。这些配置什么的信息cloudera网站上没有详细提到,有的提到了但是不是对应最新版的,按照他的文档你找不到配置文件的路径,比较麻烦。

 

如果是按照的CDH4, 那么很多配置文件比如hive的文件都放在了/var/run/目录下了,也就是动态生成的?  那么原始配置参数大概都在 cloudera manager的本地数据库里。 真不知道它是怎么改写的。

 

CDH3的hadoop版本是 0.20, 是比较老的一个版本了。 配置则和睦的基本都放在/etc下面

 

sqoop 的rpm默认已安装在master上面, 运行命令

sqoop import --connect jdbc:mysql://serveraddress/DBname --username somename -P --table tablename --hive-import --hive-table hivename --split-by keyname

如果是添加记录到某个表要加上 --append选项,但不知道这个是不是必须的。

即可导入数据到hive中,并且会自动建立hive表。 不过运行时的用户要用hdfs, 还有一个hive用户但是它是不能登录的,搞不明白cloudera的设计。

 

impala,据说性能比hive高很多,但是还没有做比较。 它可以用JDBC连接,要运行你的java程序,官方文档上说CLASSPATH 里面可以设/opt/jar/*.jar, 结果试下来不行,你必须一个一个指定/opt/jar/下面 impala/hive 的各个jar才可以 运行你的java程序。

 

 

Hadoop本身带有一个IO性能测试的工具, TestDFSIO,运行是这样的:

hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 5 -fileSize 1000

hadoop jar hadoop-test.jar TestDFSIO -read -nrFiles 5 -fileSize 1000

hadoop jar hadoop-test.jar TestDFSIO -clean

这个工具在cloudera下运行会出错, 其实map和reduce分别都完成了,但就是在最后一步会报错:

java.io.FileNotFoundException: TestDFSIO_results.log (Permission denied)

原因是运行程序一般使用hdfs身份运行,但是这时写result文件没有权限。

必须加一个参数:

hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 1 -fileSize 512 

-resFile /tmp/TestDFSIOresults.txt 

这样就可以看到测试的结果。