在zookeeper集群搭建成功之后进行hadoop集群的搭建
由于资源限制,我们只能在6台服务器上进行搭建,虽然ResourceManager是高可用的,但是我们也只能创建一台ResourceManager节点用于节省资源。
下面是各服务器节点中启动的服务和应该运行的进程的分析:
我们本次模拟的环境是在无网络的状态下进行的,所以需要下载hadoop的linux压缩包,首先将下载好的安装包解压缩,这里我解压到/herry目录***意:需要配置的文件都在hadoop目录下的etc/hadoop)。
这些工作做完之后就要进行配置文件的修改了。
1、配置hdfs
将hadoop添加到环境变量中
vim /etc/profile
进入到hadoop的配置文件目录下
cd /herry/hadoop-2.4.1/etc/hadoop/
标注的为需要修改的配置文件。
2、修改core-site.xml:
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/herry/hadoop-2.4.1/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>sentos01:2181,centos02:2181,centos03:2181</value>
</property>
</configuration>
3、修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>centos04:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>centos04:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>centos02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>centos02:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://centos02:8485;sentos01:8485;centos03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/herry/hadoop-2.4.1/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
4、修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、修改yarn-site.xml
<configuration>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>centos04</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6、修改slaves(slaves是指定子节点的位置,因为要在centos04上启动HDFS、在centos05启动yarn,所以centos04上的slaves文件指定的是datanode的位置,centos06上的slaves文件指定的是nodemanager的位置)
sentos01
centos02
centos03
7、配置ssh免登陆
ssh-****** -t rsa (得到公钥和私钥)
ssh-copy-id xxxxx (将公钥发送至目标节点)
8、将配置好的hadoop拷贝到其他节点
scp -r /herry/ xxxxxxx:/ (将herry目录拷贝到目标节点的根目录下)
第一次启动集群(严格按照下面步骤):
1、启动zookpeeper集群(sentos01、centos02、centos03)
./zkServer.sh start
2、启动journalnode(只需要在centos04上启动即可,注意:是调用的hadoop-daemons.sh这个脚本,注意是复数s的那个脚本)
sbin/hadoop-daemons.sh start journalnode
3、格式化hdfs(在centos04上执行)
hdfs namenode -format
格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/herry/hadoop-2.4.1/tmp,然后将/herry/hadoop-2.4.1/tmp拷贝到centos05的/herry/hadoop-2.4.1/tmp下。
scp -r tmp/ itcast05:/herry/hadoop-2.4.1/
4、格式化zk(在centos04上执行即可)
hdfs zkfc -formatZK
5、启动HDFS(在centos04上执行即可)
sbin/start-dfs.sh
6、启动yarn(在centos06上执行即可)
sbin/start-yarn.sh
这样我们的hadoop集群就搭建好了