Hadoop0.23.0初探2---HDFS Federation部署

Hadoop的目录文件结构:
.
|-- LICENSE.txt
|-- NOTICE.txt
|-- README.txt
|-- bin
|-- conf
|-- etc
|-- export_hadoop.sh
|-- hadoop-0.23.0-gridmix.jar
|-- hadoop-0.23.0-streaming.jar
|-- hadoop-mapreduce-0.23.0-sources.jar
|-- hadoop-mapreduce-0.23.0.jar
|-- hadoop-mapreduce-examples-0.23.0-sources.jar
|-- hadoop-mapreduce-examples-0.23.0.jar
|-- hadoop-mapreduce-test-0.23.0-sources.jar
|-- hadoop-mapreduce-test-0.23.0.jar
|-- hadoop-mapreduce-tools-0.23.0-sources.jar
|-- hadoop-mapreduce-tools-0.23.0.jar
|-- lib
|-- libexec
|-- logs
|-- modules
|-- sbin
`-- share

与之前版本最大区别是增加了etc、share、libexec目录。
在搭建Hadoop之前,我在baidu上搜索到了一篇博文
http://www.blogjava.net/shenh062326/archive/2011/11/28/363472.html
然后各种碰壁,各种问题。于是再次回归Google,回归Apache-Hadoop的doc文档,http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/Federation.html,hadoop那些大佬们写得都是片段,另外不知道我的版本是不是和它们的不一致还是其它原因,还是遇到很多没有道理的问题。于是,安下心来,一边往源码里打Log,一遍调整配置文件,最终还是配置成功了。这篇博文将正确的配置过程还原给Hadoop-0.23.0的用户。
1、下载Hadoop-0.23.0
wget http://labs.renren.com/apache-mirror//hadoop/core/hadoop-0.23.0/hadoop-0.23.0.tar.gz
wget http://labs.renren.com/apache-mirror//hadoop/core/hadoop-0.23.0/hadoop-0.23.0-src.tar.gz
(ps:renren网提供的apache镜像还是挺快的,如果链接不行的话,从列表中选一个http://www.apache.org/dyn/closer.cgi/hadoop/core/)
2、解压
tar -xvzf hadoop-0.23.0.tar.gz
3、配置集群的环境
在~/.bashrc文件内添加
#hadoop 0.23 required settings
export HADOOP_DEV_HOME=/home/jiangbing/hadoop-0.23.0 #设置你hadoop的路径,需要修改一下
export HADOOP_MAPRED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=/opt/jiangbing/hdfs23/conf #conf目录也可以按照Hadoop-0.20.*版本的特点设置在${HADOOP_DEV_HOME}/conf文件夹下。
export HDFS_CONF_DIR=/opt/jiangbing/hdfs23/conf #可单独设置路径
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/conf #可单独设置路径
如果home目录是通过NFS挂载共享的,只需在一个节点修改即可,其它节点由于挂载了/home目录,可以读取该内容。
4、安装Java、配置ssh。由于这部分与Hadoop-0.20.*的配置相同,这里不再赘述。
5、配置Hadoop内部的环境
cd ~/hadoop-0.23.0
cp share/hadoop/common/templates/conf/* $HDFS_CONF_DIR
1)修改hadoop-env.sh中的JAVA_HOME路径
由于hadoop-env.sh默认使用了export JAVA_HOME=${JAVA_HOME},如果在配置JAVA环境时,已经添加到bash中,这步可以省略。
实验使用的集群节点:gb17,gb18,gb19,gb20,gb21,gb22,配置gb17,gb18为两个namenode,分别作为ns1和ns2,HDFS配置图如下:

Hadoop0.23.0初探2---HDFS Federation部署_第1张图片
图1 HDFS节点配置图

2)${HDFS_CONF_DIR}/core-site.xml
 
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>fs.trash.interval</name>
		<value>360</value>
		<description>Number of minutes between trash checkpoints. If zero, the
			trash feature is disabled.         </description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:///opt/jiangbing/hadoop23</value>
		<description>A base for other temporary directories.</description>
	</property>
</configuration>

请注意在多个NameNode情况下,core-site.xml不需要设置fs.defaultFS,只需在下面hdfs-site.xml设置对应内容即可。
3)${HDFS_CONF_DIR}/hdfs-site.xml
<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///opt/jiangbing/hdfs23</value>
	</property>
	<property>
		<name>dfs.federation.nameservices</name>
		<value>ns1,ns2</value>
	</property>
	<property>
		<name>dfs.namenode.rpc-address.ns1</name>
		<value>gb17:9000</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.ns1</name>
		<value>gb17:23001</value>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address.ns1</name>
		<value>gb17:23002</value>
	</property>
	<property>
		<name>dfs.namenode.rpc-address.ns2</name>
		<value>gb18:9000</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.ns2</name>
		<value>gb18:23001</value>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address.ns2</name>
		<value>gb18:23002</value>
	</property>
</configuration>



4)${HDFS_CONF_DIR}/slaves
gb19 
gb20 
gb21 
gb22
ps:在新版本HDFS的配置中,所有节点的配置文件都是统一的,不用单独配置NameNode和DataNode。
下面是一个hdfs新增配置的表格
Daemon Configuration Parameter
Namenode dfs.namenode.rpc-address
dfs.namenode.servicerpc-address
dfs.namenode.http-address 
dfs.namenode.https-address
dfs.namenode.keytab.file
dfs.namenode.name.dir
dfs.namenode.edits.dir
dfs.namenode.checkpoint.dir
dfs.namenode.checkpoint.edits.dir
dfs.federation.nameservices
Secondary Namenode dfs.namenode.secondary.http-address dfs.secondary.namenode.keytab.file
BackupNode dfs.namenode.backup.address dfs.secondary.namenode.keytab.file

对照hdfs-site.xml文件可以看出,dfs.federation.nameservices指定不同的Namespace,一个Namespace对应于一个NameNode,NameNode对应配置选项的后面,增加对应的namespace名字,比如**.**.**.ns1。
6、启动HDFS Federation
1)执行Format
ssh gb17
${HADOOP_DEV_HOME}/bin/hdfs namenode -format -clusterid klose
ssh gb18
${HADOOP_DEV_HOME}/bin/hdfs namenode -format -clusterid klose
2)启动sbin/start-dfs.sh
ssh到各个节点上,使用jps命令查看对应的NameNode或者DataNode Daemon是否启动。
7、查看ui界面
Hadoop0.23.0初探2---HDFS Federation部署_第2张图片


ps:大家在配置过程中出现的问题,请留言,或者发送我的邮箱:
[email protected]
[email protected]
谢谢!

你可能感兴趣的:(java,apache,hadoop,集群,Google,bash)