集群搭建Hadoop 环境为CentOS7/JDK1.8

在看这一篇之前请先看:https://www.jianshu.com/p/bcb2f77d90e8 单机搭建Hadoop 保证可以熟悉hadoop的单机配置,这样不至于无脑粘贴xml文件内容导致各种问题。这边单机部署采用的是hadoop3这边我们回归到hadoop2.7去搭集群,其实都一样。

1.准备

本次要求准备三台服务器,这边演示使用VMware开了三个环境。

192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2

这里要说一下,首先三个环境都要有一个相同名字的用户,我创建了hadoop用户,并互相配置好互信。
我们一步一步进行。
在Master/Slave1/Slave2的环境,执行命令sudo vim /etc/hosts
请依照自己具体ip进行设置

然后创建hadoop用户,我再Master已经有hadoop用户了,这边在Salve1和Slave2创建。原因就是如果我们不使用相同名字的用户,ssh配置会比较麻烦,很容易用自身用户名去做另外机器的用户名,从而出现用户无权限的问题。
具体创建方法:
root权限下分别执行
adduser hadoop
passwd hadoop
然后visudo修改一下内容,给hadoop用户权限。
然后配置互信,执行ssh-keygen -t rsa创建目录,和之前一样,这里不做赘述。唯一要提醒的一点是:
ssh 对目录的权限有要求,代码中要设置下新生成的config文件权限才行。
~目录权限是750,~/.ssh 的是700, ~/.ssh/* 的是600,~/.ssh/config 是700
否则容易出现权限问题。
配置好了之后,三台机器两两互信。可以采用两种方式:
1.ssh-copy-id -i
2.直接互相把ras.pub的内容粘贴到 authorized_keys 文件中。
都可以,我用的第二种,比较暴力,注意,一定要看好用户!!!别问我怎么知道的。
配置好了检查一下,如果互相可以ssh ip date就证明成功啦!比如在Master进行 ssh Slave1 date
第一次要写个yes再回车,等第二次就可以直接不输入密码得到结果了。这样准备工作就完成了。

2.正式搭建

集群和单机的区别就是准备工作稍微复杂一些。其他的差不多,我们把Master作为主节点,NameNode和ResourceManager都在主节点上,这边我把Secondary NameNode也放在主节点上了。Slave1和Salve2作为从节点,主要运行NodeManager和DataNode。
简单解释一下:

  • NameNode:主要是管理文件系统的命名空间,维护文件系统树和文件与目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和日志编辑文件。应该放在主节点上。
  • DataNode:文件系统的工作节点。他们需要储存并检索数据块,并且定期向NameNode发送他们所储存的块的列表。适合放在Slave节点上。
  • Secondary NameNode:辅助NameNode,它不能当作NameNode。定期合并编辑日志与命名空间镜像,防止编辑日志过大,一般单独的物理机上运行,当然也可以放主节点上。
  • ResourceManager:基于程序对资源的需求进行调度,是一个中心服务,做的工作就是去调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况。放主节点上。
  • NodeManager:是每台机器框架代理,是执行应用程序的容器,监控应用程序资源的使用情况(CPU,内存,硬盘,网络)。然后向调度器也就是ResourceManager进行汇报。

好了!我们现在Master机器上搞事情!
在hadoop目录下,创建一个dfs目录,里面创建三个文件夹,分别是name、data、namesecondary
如果完成过之前帖子的单机部署那么我们需要,清理一下里面的current文件夹,直接删掉就ok。防止因为Version问题导致的不同步从而无法启动。
我又创建了一个tmp文件夹
hadoop下目录结构应该是这样的:
hadoop目录

好的,那么我们去etc/hadoop目录下去依次修改配置文件!
再一次注意!里面的路径和端口号不要无脑粘贴,请根据自己具体的路径去配置。
首先修改的是hdfs-site.xml

<configuration>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/soft/hadoop-2.7.1/dfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/soft/hadoop-2.7.1/dfs/data</value>
</property>
<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>Master:50090</value>
</property>
</configuration>

然后是core-site.xml

<configuration>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/opt/soft/hadoop-2.7.1/tmp</value>
          <description>Abase for other temporary directories.</description>
        </property>
         <property>
           <name>fs.defaultFS</name>
           <value>hdfs://Master:9000</value>
         </property>
</configuration>

然后是mapred-site.xml

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

然后是yarn-site.xml

<configuration>
 <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Master</value>
  </property>
    <!-- Site specific YARN configuration properties -->
   <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
   <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

最后是slaves文件

Slave1
Slave2

好的!!这样Master就配置好了!!!接下来就是配置Slave1和Slave2的时间了!我们可以采用简单暴力的方式去搞。直接把Master的hadoop文件夹传过去!对!就是直接传过去就行了,啥都不用改。

执行一下hdfs namenode -format格式化
如果成功了证明没啥问题,直接启动所有!start-all.sh
等待之后我们用jps指令看一下
Master:
Master
Slave1:
Slave1
Slave2:
Slave2
证明节点都正常。去web ui去看一下是否真正常。
我是去Master的50070端口查看
点击Datanodes选项卡可以看到:
http://192.168.20.3:50070
可以看到Slave1和Slave2的DataNode也都真实存在,证明集群部署成功!可以使用啦~!

PS:如果最后结果不正常,请分别查看hadoop的logs文件夹下的日志文件。会有错误提示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值