专栏首页孙小白hadoop2.x全分布式集群搭建(一主二从)

hadoop2.x全分布式集群搭建(一主二从)

推荐大家看完上一篇伪分布搭建,在上一篇中,基础条件都有详细配置过程,本次全分布式搭建只是在伪分布的基础上有所加深。

相较于伪分布,多了以下内容

第一步:添加主机名与IP映射(每个节点都要配置)

vi /etc/hosts,增加以下内容:
192.168.154.110 master
192.168.154.111 slvae1
192.168.154.112 slave2

第二步:主从节点免密登陆

在每个用户的家目录下的.ssh目录:

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@master
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub sun@slave2

或者在主节点的家目录下的.ssh目录执行:

ssh-keygen -t rsa

然后生成了id_rsa与id_rsa.pub,分别是私有与公有秘钥,我们要把公有秘钥复制到一个authorized_keys文件内,这个文件的作用就是完成无密码访问。 然后执行:

scp -r /home/sun/.ssh/authorized_keys  sun@slave1/2:/home/sun/.ssh/

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@slave1:/root/.ssh/authorized_keys
scp /root/.ssh/id rsa.pub root@slave2:/root/.ssh/authorized_keys

再给所有虚报机上的authorized_keys添加权限

chmod 644 /root/.ssh/authorized_keys

第三步:配置Java和hadoop的环境变量

vi /etc/profile
export JAVA_HOME=jdk目录
export PATH=$PATH: $JAVA_HOME/bin
export HADOOP_HOME=hadoop目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新环境变量

source /etc/profile

第四步:修改配置文件

  1. vi hadoop-env.sh
export JAVA_HOME=jdk目录
export HADOOP_HOME=hadoop目录
  1. vi core-site.xml
<!--设定hadoop运行时产生文件的存储路径 -->
  <property>
       <name>hadoop.tmp.dir</name>
       <value>file:/home/sun/app/hadoop-3.1.2/tmp</value>
       <description>a base for other tempory directories.</description>
  </property>
 
<!--指定namenode的通信地址,默认8020端口 -->
  <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
   </property>
</configuration>
  1. vi hdfs-site.xml
<configuration>
 
<!-- namenode 上存储 hdfs 名字空间元数据-->
 <property>  
       <name>dfs.name.dir</name>
         <value>/home/sun/app/hadoop-3.1.2/tmp/dfs/name</value>
    </property>
 
<!-- datanode 上数据块的物理存储位置--> 
     <property>
        <name>dfs.data.dir</name>
         <value>/home/sun/app//hadoop-3.1.2/tmp/dfs/data</value>
     </property>
 
<!-- 设置 hdfs 副本数量 -->
<property>
        <name>dfs.replication</name>
        <value>1</value>
 </property>
</configuration>

注:这个文件可以设置namenode,secondarynamenode的位置

<name>dfs.namenode.http-address</name>
<value>msater:50070</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>msater:50090</value>
</property>

<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>

<property>
      <name>dfs.permissions</name>
      <value>false</value>
      <description>need not permissions</description>
</property>
  1. vi mapred-site.xml
<configuration>
<!-- 指定yarn运行-->   
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property> 
 
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

<property>
   <name>mapreduce.map.memory.mb</name>
   <value>2048</value>
</property>
 
</configuration

或者

<property>
    <name>mapred.job.tracker</name>
    <value>msater:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/usr/local/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
  1. vi yarn-site.xml
<!-- 指定ResourceManager的地址 -->
 
<configuration>
 <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
</property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
 
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>5</value>
</property>
</configuration>

或者

<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>输入刚才返回的Hadoop classpath路径</value>
</property>
  1. 在master机器上/home/hadoop/hadoop/etc/hadoop/路径下修改
vi workers

添加如下内容

 slave1 
 slave2
  1. 修改/home/hadoop/hadoop/sbin/目录下的几个文件,分别在 start-dfs.shstop-dfs.sh中添加如下内容:
HDFS_DATANODE_USER=hadoop
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=hadoop
HDFS_SECONDARYNAMENODE_USER=hadoop

分别在 start-yarn.shstop-yarn.sh 中添加如下内容:

YARN_RESOURCEMANAGER_USER=hadoop
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=hadoop

或者 vi hadoop-env.sh 添加如下代码

export JAVA_HOME=jdk目录
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

第五步:同步

使用scp命令将master下的目录复制到各个从节点的相应位置上

scp -r jdk目录 node2:jdk目录
scp -r hadoop目录 node2:hadoop目录
scp -r /etc/profile node2:/etc/
 
scp -r jdk目录 node3:jdk目录
scp -r hadoop目录 node3:hadoop目录
scp -r /etc/profile node3:/etc/

在从节点(slave1 slave2)上分别运行下述命令刷新环境变量

source /etc/profile

第六步:只在msater中格式化节点,然后启动

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • centos7搭建hadoop3.*.*系列

     最近搭建这个hadoop踩过不少坑,先是配置JDK搞错路径(普通用户和root用户下的路径不同),再就是hadoop版本不同导致的启动错误,网上找到的是ha...

    爱学习的孙小白
  • 在centos7上进行hadoop-3.1.2的伪分布搭建

    vi /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名称可能不同)

    爱学习的孙小白
  • HDFS和MR的配置和使用

    ①在$HADOOP_HOME/etc/hadoop/core-site.xml文件

    爱学习的孙小白
  • Hadoop HA及Failover搭建

    在Hadoop1.X版本中使用单个NameNode来管理所有的DataNode的元数据,一旦NameNode节点发生故障将导致整个集群不可用,而且必须手动恢复N...

    z小赵
  • Hadoop-HA高可用搭建

    2、hosts文件要配置好,三台都可以相互通过主机名ping通,三台虚拟机都要配置!如下:

    可爱见见
  • hadoop ha搭建

    修改zoo.cfg,创建对应的目录,在data目录下创建myid文件,一切完毕后进行启动

    yiduwangkai
  • Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统

    今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成。 SpringMVC+Mybatis Web开发流程 配置数据...

    用户1154259
  • mysql : utf8mb4 的问题

    微信呢称和QQ呢称上有很多火星文和emoji表情图片,这些数据,如果直接insert到mysql数据库,一般会报错,设置成utf8都不好使,必须改成utf8mb...

    菩提树下的杨过
  • druid 数据源 使用属性文件的一个坑

    直接上代码: <bean id="propertiesFactoryBean" class="org.springframework.bea...

    菩提树下的杨过
  • Spring - 通过SpEL为bean赋值(4)

    <property name = "prefix" value="#{prefixGenerator}"/>

    桑鱼

扫码关注云+社区

领取腾讯云代金券