Hadoop完全分布式配置
***** 全部三个节点 *****
1. 关闭防火墙
service iptables stop
chkconfig iptables off
2. 修改主机名,Hadoop主机名中不能出现_和-
vim /etc/sysconfig/network
修改其中的HOSTNAME属性的值,例如HOSTNAME=hadoop01
修改完成之后保存退出,然后需要重新生效
source /etc/sysconfig/network
3. 需要将主机名和ip进行映射
vim /etc/hosts
添加主机名 IP映射,例如:
192.168.245.130 hadoop01
192.168.245.131 hadoop02
192.168.245.132 hadoop03
注意,改完之后,三个节点中的hosts文件的内容应该是一样的
4. 重启
reboot
5. 三个节点之间配置免密互通
产生密钥
ssh-keygen
拷贝到三个节点上,注意是三个节点每一个节点都需要执行这三句话,保证任意两个节点之间能够免密互通
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03
云主机密码:tarena2017Up;
最好三个节点都ssh连接一下看一下是否需要密码,如果连接不需要密码就能登录,那就表示免密配置成功
6. 安装JDK
7. 安装Zookeeper
***** 现在第一个节点上配置,然后拷贝给其他节点 *****
8. 将伪分布式重命名
mv hadoop-2.7.1 hadoop-standalone
9. 解压Hadoop的安装包
tar -xvf hadoop-2.7.1_64bit.tar.gz
10. 进入安装目录的子目录
cd hadoop-2.7.1/etc/hadoop/
11. 修改hadoop-env.sh
vim hadoop-env.sh
修改JAVA_HOME和HADOOP_CONF_DIR
export JAVA_HOME=/home/presoftware/jdk1.8
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
保存退出之后重新生效
source hadoop-env.sh
12. 修改core-site.xml
vim core-site.xml
添加:
<!--为集群起别名,以确定向Zookeeper注册的节点的名字-->
<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>
13. 修改hdfs-site.xml
vim hdfs-site.xml
添加:
<!--注意要和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>
14. 编辑mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
15. 编辑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>
16. 编辑slaves - 这个文件是用于指定DataNode以及NodeManager的节点位置
vim slaves
添加三个节点的名字,例如
hadoop01
hadoop02
hadoop03
17. 需要将这个hadoop的安装目录拷贝给其他两个节点
scp -r hadoop-2.7.1 root@hadoop02:/home/software/
scp -r hadoop-2.7.1 root@hadoop03:/home/software/
***********************************************************
18. 三个节点需要配置环境变量
vim /etc/profile
在文件最后添加:
export HADOOP_HOME=/home/software/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出之后需要重新生效
source /etc/profile
19. 三个节点都需要启动Zookeeper
cd /home/software/zookeeper-3.4.7/bin
sh zkServer.sh start
sh zkServer.sh status
20. 在第一个节点上格式化Zookeeper - 实际上就是在Zookeeper上去注册节点
hdfs zkfc -formatZK
21. 在全部三个节点上启动JournalNode
hadoop-daemon.sh start journalnode
22. 在第一个节点上格式化NameNode
hadoop namenode -format
23. 在第一个节点上启动NameNode
hadoop-daemon.sh start namenode
24. 在第二个节点上格式化NameNode
hdfs namenode -bootstrapStandby
25. 在第二个节点上启动NameNode
hadoop-daemon.sh start namenode
26. 在全部三个节点上启动DataNode
hadoop-daemon.sh start datanode
27. 在第一个节点以及第二节点上来启动故障切换进程
hadoop-daemon.sh start zkfc
28. 在第三个节点上来启动yarn
start-yarn.sh
29. 在第一个节点上来单独启动resourcemanager
yarn-daemon.sh start resourcemanager
30. 从第二次启动开始,只需要用start-all.sh即可
如果启动成功,则各个节点的进程分布如下:
第一个节点8个:
Jps
NameNode
DataNode
JournalNode
ResourceManager
NodeMyarn-daemon.sh start resourcemanageranager
DFSZKFailoverController
QuorumPeerMain
第二个节点7个:
Jps
NameNode
DataNode
JournalNode
NodeManager
DFSZKFailoverController
QuorumPeerMain
第三个节点6个:
Jps
DataNode
JournalNode
ResourceManager
NodeManager
QuorumPeerMain
如果发现少了节点,可以试着单独启动一次:
hadoop-daemon.sh start namenode/datanode/journalnode/zkfc
yarn-daemon.sh start resourcemanager/nodemanager
Hadoop完全分布式配置的更多相关文章
- Data - Hadoop伪分布式配置 - 使用Hadoop2.8.0和Ubuntu16.04
系统版本 anliven@Ubuntu1604:~$ uname -a Linux Ubuntu1604 4.8.0-36-generic #36~16.04.1-Ubuntu SMP Sun Feb ...
- Hadoop伪分布式配置
一步一步来: 安装VMWARE简单,安装CentOS也简单 但是,碰到了一个问题:安装的虚拟机没有图形化界面 最后,我选择了CentOS-7-x86_64-DVD-1503-01.iso镜像 配置用户 ...
- Hadoop伪分布式配置:CentOS6.5(64)+JDK1.7+hadoop2.7.2
java环境配置 修改环境变量 export JAVA_HOME=/usr/java/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin export CLASS ...
- 转载:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
原文 http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到, ...
- Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
摘自: http://www.cnblogs.com/kinglau/p/3796164.html http://www.powerxing.com/install-hadoop/ 当开始着手实践 H ...
- Hadoop安装教程_单机/伪分布式配置
环境 本教程使用 CentOS 6.4 32位 作为系统环境,请自行安装系统(可参考使用VirtualBox安装CentOS).如果用的是 Ubuntu 系统,请查看相应的 Ubuntu安装Hadoo ...
- 新手推荐:Hadoop安装教程_单机/伪分布式配置_Hadoop-2.7.1/Ubuntu14.04
下述教程本人在最新版的-jre openjdk-7-jdk OpenJDK 默认的安装位置为: /usr/lib/jvm/java-7-openjdk-amd64 (32位系统则是 /usr/lib/ ...
- 在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例 ...
- Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04(转)
http://www.powerxing.com/install-hadoop/ http://blog.csdn.net/beginner_lee/article/details/6429146 h ...
随机推荐
- Java处理图片工具类
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- leetcode-168周赛-1296-划分数字为连续数字的集合
题目描述: 自己的提交: class Solution: def isPossibleDivide(self, nums: List[int], k: int) -> bool: c = col ...
- MySql 字段类型对应 Java 实体类型
前言 MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的: 一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.Strin ...
- delphi xe10 获取屏幕截图
//截取屏幕图片 function MakeScaleScreenshot(Sender: TControl): TBitmap; function GetScreenScale: Single; v ...
- eclipse背景设置什么颜色缓解眼睛疲劳
eclipse背景设置什么颜色缓解眼睛疲劳 1.打开window->Preference,弹出Preference面板 2.展开General标签,选中Editors选项,展开. 3.选中 Te ...
- bzoj1042题解
[题意分析] 有q个询问,每次询问求一个只有四个物品的背包方案数. [解题思路] 先计算出所有面值硬币的无限背包方案数. 考虑容斥,每个限制表示选取大于di个面值ci的硬币,总方案数=0限制方案数-1 ...
- NOIp2018集训test-9-17(pm)
T1记忆(memory) 我大概是只记忆只有七秒的金鱼吧.看了下以前的代码发现真的很简单,但是考场上只打了个暴力,虽然骗了88pt.就是枚举选的是哪个串,然后vis[i]表示选了i这些位能不能猜出它, ...
- flutter 超出俩行点点点
Text( '${listItem["title"]}', overflow: TextOverflow.ellipsis, maxLines: 2, style: TextSty ...
- 其它课程中的python---4、Matplotlib最最最最简单使用
其它课程中的python---4.Matplotlib最最最最简单使用 一.总结 一句话总结: 慢慢来吧,不着急,心态平和和沉稳:每次和世界交互,你就能感受到无比的自信 1.如何区别python2和p ...
- Python中的动态类
Python中的动态类 有这样一个需求,我有SegmentReader.PostagReader.ConllReader这三个Reader,他们都继承于一个Reader类.在程序运行中,由用户通过se ...