1:配置免密码登录 使用ssh-keygen生成密钥,会在当前目录下生成一个.ssh文件夹和id_rsa私钥公钥; 把公钥拷贝到同一台主机对应的.ssh目录下,然后加载进authorized_keys文件里 cat id_rsa.pub>>authorized_keys //所有的公钥都要追加进这个文件; 把authorized_keys文件拷贝到每台主机的.ssh目录;然后逐个登录一次 也可以使用ssh-copy-id myuser@mynode 2:安装zookeeper;配置conf/zoo.cfg;添加每个主机和myid; 启动zookeeper:bin/zkServer.sh start 3:如果java是通过下载压缩包的形式的,那么需要配置一下系统环境 vim /etc/profile 添加: export JAVA_HOME=/home/hadoop/jdk1.7.0_80 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar source /etc/profile 4:修改hadoop配置文件: 配置文件都在hadoop安装目录下的etc/hadoop/目录下 core-site.xml文件:

<configuration>
 <!-- 指定nameservice的名称为mycluster -->
 <property>
	 <name>fs.defaultFS</name>
	 <value>hdfs://mycluster</value> //hdfs-site.xml配置文件里对应的名称
 </property>
 <!-- 编辑日志文件存储的路径 -->
 <property>
	 <name>dfs.journalnode.edits.dir</name>
	 <value>/var/hadoop/jn</value> //需要创建jn/mycluster文件夹
 </property>

 <!-- 配置缓存文件的目录 -->
 <property>
	<name>hadoop.tmp.dir</name>
	<value>/var/hadoop/tmp</value>
 </property>
<!--以下配置是使用文件系统作为namenode的
 <property>
				<name>fs.defaultFS</name>
				<value>hdfs://master:9000</value>
		</property>
 <property>
	<name>hadoop.tmp.dir</name>
	<value>/var/hadoop/tmp</value>
 </property>
-->
</configuration>

hdfs-site.xml

<configuration>
<!-- 指定hdfs的nameservice的名称为mycluster -->
 <property>
	 <name>dfs.nameservices</name>
	 <value>mycluster</value>
 </property>

 <!-- 指定mycluster的两个namenode的名称,分别是nn1,nn2 -->
 <property>
	 <name>dfs.ha.namenodes.mycluster</name>
	 <value>nn1,nn2</value>
 </property>

 <!-- 配置nn1,nn2的rpc通信 端口 -->
 <property>
	 <name>dfs.namenode.rpc-address.mycluster.nn1</name>
	 <value>master:8020</value>
 </property>
 <property>
	 <name>dfs.namenode.rpc-address.mycluster.nn2</name>
	 <value>slave-one:8020</value>
 </property>


 <!-- 配置nn1,nn2的http访问端口 -->
 <property>
	 <name>dfs.namenode.http-address.mycluster.nn1</name>
	 <value>master:50070</value>
 </property>
 <property>
	 <name>dfs.namenode.http-address.mycluster.nn2</name>
	 <value>slave-one:50070</value>
 </property>


 <!-- 指定namenode的元数据存储在journalnode中的路径 -->
 <property>
	 <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://master:8485;slave-one:8485;slave-two:8485/mycluster</value>
 </property>

 <!-- 配置失败自动切换的方式 -->
 <property>
	 <name>dfs.client.failover.proxy.provider.mycluster</name>
	 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 </property>

 <!-- 配置隔离机制 -->
	<property>
			<name>dfs.ha.fencing.methods</name>
			<value>sshfence</value>
		</property>
 <!-- 指定秘钥的位置 -->
		<property>
			<name>dfs.ha.fencing.ssh.private-key-files</name>
			<value>/root/.ssh/id_rsa</value>
		</property>

 <!-- 数据备份的个数 -->
 <property>
	<name>dfs.replication</name>
	<value>3</value>
 </property>

 <!--关闭权限验证 -->
 <property>
	<name>dfs.permissions.enabled</name>
	<value>false</value>
 </property>

 <!-- 开启失败故障自动转移 -->
 <property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>

	<!-- 配置zookeeper地址 -->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>master:2181,slave-one:2181,slave-two:2181</value>
	</property>

<!--以下配置为使用文件系统的-->
<property>
				<name>dfs.namenode.secondary.http-address</name>
				<value>master:50090</value>
		</property>
		<property>
				<name>dfs.namenode.name.dir</name>
				<value>/var/hadoop/dfs/name</value>
		</property>
		<property>
				<name>dfs.datanode.data.dir</name>
				<value>/var/hadoop/dfs/data</value>
		</property>
		<property>
				<name>dfs.replication</name><!--node number-->
				<value>2</value>
		</property>
<!--以上配置为使用文件系统的-->
</configuration>

配置mapred-site.xml文件:

<configuration>
		<property>
				<name>mapreduce.framework.name</name>
				<value>yarn</value>
		</property> 
		<property> 
				<name>mapreduce.jobhistory.address</name> 
				<value>master:10020</value> 
		</property> 
		<property> 
				<name>mapreduce.jobhistory.webapp.address</name> 
				<value>master:19888</value> 
		</property> 
		<property> 
				<name>mapreduce.job.ubertask.enable</name> 
				<value>true</value> 
		</property>
</configuration>

配置yarn-site.xml文件

<configuration>
<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
</property>
<property>
	<name>yarn.resourcemanager.cluster-id</name>
	<value>cluster1</value>
</property>
<property>
	<name>yarn.resourcemanager.ha.rm-ids</name>
	<value>rm1,rm2</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname.rm1</name>
	<value>master</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname.rm2</name>
	<value>slave-one</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.address.rm1</name>
	<value>master:8088</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.address.rm2</name>
	<value>slave-one:8088</value>
</property>
<property>
	<name>yarn.resourcemanager.zk-address</name>
	<value>master:2181,slave-one:2181,slave-two:2181</value>
</property>
<property>
	<name>yarn.resourcemanager.store.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
	<name>yarn.nodemanager.recovery.enabled</name>
	<value>true</value>
</property>
<property>
	<name>yarn.nodemanager.recovery.dir</name>
	<value>/var/hadoop/yarn-recovery</value>
</property>
<property>
	<name>yarn.nodemanager.address</name>
	<value>45454</value>
</property>
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>
<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>
</configuration>

创建文件夹: mkdir -p /var/hadoop/jn/mycluster mkdir -p /var/hadoop/tmp mkdir -p /var/hadoop/dfs/name mkdir -p /var/hadoop/dfs/data mkdir -p /var/hadoop/yarn-recovery 配置hadoop-env.sh的java_home路径: export JAVA_HOME=/usr/lib/jvm/java-1.8.0 配置slaves文件:添加所有节点主机 master slave-one slave-two 5:每一台机子上都启动journalnode节点:为格式化做准备 sbin/hadoop-daemon.sh start journalnode 6:在一台主机上格式化namenode: bin/hdfs namenode -format mycluster 7:在该台主机格式化完namenode后,启动namenode,方便给其他主机同步namenode信息 sbin/hadoop-daemon.sh start namenode 8:在其他主机上同步namenode信息:由于namenode节点只需要两个,所以只同步配置里的主机 bin/hdfs namenode -bootstrapstandby 如果同步成功,可以看到集群的id等相关信息;如果不成功;查看主机监控的地址是否有误; 如果监听127.0.0.1会导致连接不上,修改/etc/hosts文件 9:配置zookeeper故障转移:对namenode进行zk格式化;需要确保namenode进行已经启动 在一台主机上运行: bin/hdfs zkfc -formatZK 10:关闭所有hdfs:sbin/stop-dfs.sh;然后再重新启动所有sbin/start-dfs.sh 11:配置yarn:需要在每一台ResourceManager上启动 sbin/yarn-daemon.sh start resourcemanager 12:查看yarn启动状态: bin/yarn rmadmin -getServiceState rm1|rm2 //rm1,rm2是定义的名称

当前版本一个Namespace只运行最多两个namenode节点;例如mycluster只能有nn1和nn2两个namenode节点;nn1和nn2名称可以自己命名;