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在单独的一块磁盘上。
安装好以后是这样的界面
服务相关的用户都会自动创建好。
启动后默认的端口:
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
这样就可以看到测试的结果。