一个完全的hadoop分布式安装至少需要3个zookeeper,3个journalnode,3个datanode,2个namenode组成。

也就是说需要11个节点,但是我云主机有限,只有3个,所以把很多节点搭在了同一个服务器上。

步骤:

1.关闭防火墙

service iptables stop

2.修改主机名

vim /etc/sysconfig/network

三台主机都需要修改

HOSTNAME=hadoop01 # 第一台
HOSTNAME=hadoop02 # 第二台
HOSTNAME=hadoop03 # 第三台

例如:

3.修改hosts文件进行映射

vim /etc/hosts

三台主机都要修改

10.42.127.183   hadoop01
10.42.8.245 hadoop02
10.42.62.96 hadoop03

例如:

4.免密登录

产生秘钥:ssh-keygen

进行复制:ssh-copy-id 用户名@主机

第一台主机操作示例:

ssh-keygen

回车

回车

ssh-copy-id hadoop01@10.42.127.183

ssh-copy-id hadoop02@10.42.8.245

ssh-copy-id hadoop03@10.42.62.96

其余两台进行相同操作。

5.重启三台服务器

reboot

6.安装jdk

7.安装zookeeper

安装zookeeper过程

8.启动zookeeper

9.安装hadoop

(1) 编辑 hadoop-env.sh,并且重新生效

vim hadoop-env.sh

export JAVA_HOME=/home/presoftware/jdk1.
export HADOOP_CONF_DIR=/home/software/hadoop-2.7./etc/hadoop

(2)编辑 core-site.xml

vim core-site.xml

    <!--指定hdfs的nameservice,为整个集群起一个别名-->
<property>
<name>fs.defaultFS</name>        
<value>hdfs://ns</value>
</property>
<!--指定Hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
<!--指定zookeeper的存放地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>

(3)编辑 hdfs-site.xml

vim hdfs-site.xml

    <!--执行hdfs的nameservice为ns,注意要和core-site.xml中的名称保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!--ns集群下有两个namenode,分别为nn1, nn2-->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信-->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>hadoop01:9000</value>
</property>
<!--nn1的http通信-->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>hadoop01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>hadoop02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--指定namenode的元数据在JournalNode上存放的位置,这样,namenode2可以从journalnode集
群里的指定位置上获取信息,达到热备效果-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/software/hadoop-2.7.1/tmp/journal</value>
</property>
<!-- 开启NameNode故障时自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!--配置namenode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>  
<name>dfs.namenode.name.dir</name>  
<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>  
</property>  
<!--配置datanode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>  
<name>dfs.datanode.data.dir</name>  
<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>  
</property>
<!--配置复本数量-->  
<property>  
<name>dfs.replication</name>  
<value>3</value>  
</property>
<!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->          
                       
<property>  
<name>dfs.permissions</name>  
<value>false</value>  
</property>  

(4)编辑 mapred-site.xml

vim mapred-site.xml

  <property>  
  <name>mapreduce.framework.name</name>  
  <value>yarn</value>  
  </property>

(5) 编辑 yarn-site.xml

vim yarn-site.xml

    <!--配置yarn的高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定两个resourcemaneger的名称-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--配置rm1的主机-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<!--配置rm2的主机-->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop03</value>
</property>
<!--开启yarn恢复机制-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--执行rm恢复机制实现类-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!--配置zookeeper的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!--执行yarn集群的别名-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>ns-yarn</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>  
<name>yarn.nodemanager.aux-services</name>  
<value>mapreduce_shuffle</value>  
</property>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>

(6)编辑 slaves

vim slaves

hadoop01
hadoop02
hadoop03

(7)配置环境变量

vim /etc/profile

export HADOOP_HOME=/home/software/hadoop-2.7.
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(8)将hadoop拷贝到另外两个主机

scp -r hadoop-2.7.1 hadoop02:/home/software/

scp -r hadoop-2.7.1 hadoop03:/home/software/

(9)配置另外两个主机的环境变量

export HADOOP_HOME=/home/software/hadoop-2.7.
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

10.在任意一个节点上进行Zookeeper格式化注册

hdfs zkfc -formatZK

11.创建指定的目录

cd hadoop-2.7.1/

mkdir tmp

cd tmp

mkdir journal

mkdir hdfs

cd hdfs/

mkdir data

mkdir name

12.在三台节点上分别启动journalnode

hadoop-daemon.sh start journalnode

13.格式化第一个节点

hadoop namenode -format

14.启动第一个节点的namenode

hadoop-daemon.sh start namenode

15.格式化第二个节点上的namenode

hdfs namenode -bootstrapStandby

16.启动第二个点的namenode

hadoop-daemon.sh start namenode

17.在三个节点上分别启动datanode

hadoop-daemon.sh start datanode

18.在第一个节点和第二个节点上启动zkfc实现状态的切换

hadoop-daemon.sh start zkfc

19.在第一个节点上启动yarn

start-yarn.sh

20.在第三个节点上启动resourcemanager

yarn-daemon.sh start resourcemanager

21.浏览器访问

第一个服务器:http://10.42.127.183:50070

第二个服务器:http://10.42.8.245:50070

出现上图所示即为成功。

最新文章

  1. 2.lvm动态逻辑卷
  2. find your present (感叹一下位运算的神奇)
  3. angularjs向后台传递数据,与后端进行交互
  4. 机器学习之KNN算法思想及其实现
  5. swift 代码添加image
  6. Swift入门篇-基本类型(3)
  7. hdu 5187 zhx&#39;s contest
  8. php去除数组中重复数据
  9. Flume FileChannel优化(扩展)实践指南
  10. e = e || window.event用法细节讨论
  11. ORA-00600: 内部错误代码, 参数: [kqlnrc_1]
  12. Python 图论工具
  13. js里面对数据处理的方法
  14. 设计模式之Factory模式(C++)
  15. 项目实战3—实现基于Keepalived+LVS的高可用集群网站架构
  16. spring学习总结——装配Bean学习一(自动装配)
  17. 【C#复习总结】多线程编程
  18. Java面试题考点全面总结
  19. Java编程的逻辑 (4) - 整数的二进制表示与位运算
  20. bzoj 2460 拟阵+判线性相关

热门文章

  1. 第8次Scrum会议(10/20)【欢迎来怼】
  2. tomcat部署成https协议
  3. 实验吧—隐写术——WP之 男神一般都很低调很低调的!!
  4. Python的文件处理
  5. 斐波那契数列的生成 %1e8 后的结果
  6. 直面Java 第002期
  7. 【BZOJ3514】 Codechef MARCH14 GERALD07加强版
  8. inux下C中怎么让才干安全关闭线程
  9. extundelete
  10. Java Runnable与Callable区别