1. zookeeper集群
第一步:zookeeper的配置文件 zoo.cfg 每个文件都加入如下内容
server.1=192.168.172.130:2888:3888
server.2=192.168.172.131:2888:3888
server.3=192.168.172.129:2888:3888
第二步: 为每个zookeeper创建data目录下面 (已经创建过)
# example sakes.
在zoo.cfg的配置文件中:
dataDir=/opt/zookeeper-3.4.10/data
第三步:指定的myid文件 内容就是对应的server.1 .后边的名字 1 2 3
指定的myid文件 内容就是对应的server.1 .后边的名字 1 2 3
[root@localhost Desktop]# cd /opt/zookeeper-3.4.10/data/
[root@localhost data]# echo "1"> myid
文件中的内容就是 1或者2或者3--->
echo "1">/opt/zookeeper/data/myid
echo "2">/opt/zookeeper/data/myid
echo "3">/opt/zookeeper/data/myid
2.配置hadooop
配置core-site.xml、hdfs-site.xml,mapred-site.xml、yarn-site.xml
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>/opt/hadoop/hadoop-2.8.1/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>192.168.172.133:2181,192.168.172.134:2181,192.168.172.135:2181</value>
</property>
</configuration>
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>192.168.172.133:8020</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>192.168.172.133:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>192.168.172.134:8020</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>192.168.172.134:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://192.168.172.133:8485;192.168.172.134:8485;192.168.172.135:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop/hadoop-2.8.1/journaldata</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>
map-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>192.168.172.133</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>192.168.172.134</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>192.168.172.133:2181,192.168.172.134:2181,192.168.172.135:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
</configuration>
将hadoop配置发送到另外两台机器
scp /opt/hadoop-2.2.1/etc/hadoop/* root@192.168.172.134:/opt/hadoop-2.8.1/etc/hadoop/
scp /opt/hadoop-2.2.1/etc/hadoop/* root@192.168.172.134:/opt/hadoop-2.8.1/etc/hadoop/
配置hadoop的环境变量
/etc/profile
export JAVA_HOME=/opt/jdk1.8.0_144
export HADOOP_HOME=/opt/hadoop-2.7.2
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
配置hadoop-env.sh的java变量
export JAVA_HOME=/opt/jdk1.8.0_144
export JAVA_HOME=$JAVA_HOME
1.把hadoop1、hadoop2、hadoop3的/opt/hadoop目录删掉
2、 关闭防火墙
3、 每个节点启动zookeeper
4、 每个节点启动journalnode
hadoop-daemon.sh start journalnode
5、 在其中一个namenode节点下:hdfs namenode -format
拷贝到其他节点
scp -r /opt/hadoop/hadoop-2.8.1/tmp node2:/opt/hadoop/hadoop-2.8.1/
scp -r /opt/hadoop/hadoop-2.8.1/tmp node3:/opt/hadoop/hadoop-2.8.1/
6、 任意namenode
hdfs zkfc -formatZK
7、 启动hdfs
sbin/start-dfs.sh
8、 启动yarn
start-yarn.sh
yarn-daemon.sh start resourcemanager 单独启动方式
9、 测试hdfs基本命令和mapreduce例子程序
本文详细介绍了Hadoop完全分布式安装的步骤,包括zookeeper集群的配置和hadoop的环境变量设定,以及从namenode格式化、journalnode启动到hdfs和yarn的启动全过程。

被折叠的 条评论
为什么被折叠?



