ubuntu 搭建 Hadoop完全分布式(resourcemanager 和 NameNode 不在同一台机器上)

拓扑图

在这里插入图片描述

准备工作

  1. 新建虚拟机 master,安装 Ubuntu
  2. 配置固定 IP
  3. 安装必要软件(SSH 服务端、安装 Java 环境、安装 Hadoop,并完成配置)

分布式模式配置

1.修改主机名

先修改一台,克隆虚拟机之后再改其它的

# sudo gedit /etc/hostname
sudo vi /etc/hostname
# hadoop1 虚拟机修改为 hadoop1
# hadoop2 虚拟机修改为 hadoop2
# hadoop3 虚拟机修改为 hadoop3

(注意:只有重启 Linux 系统才能看到主机名的变化)

2.设置 hosts 文件

  • 配置 IP 与 HOSTNAME 的映射(IP 根据自己机器情况设置)

    # sudo gedit /etc/hosts
    sudo vi /etc/hosts
    # 3 台虚拟机都配置一样	
    # 192.168.13.21	  hadoop1
    # 192.168.13.22   hadoop2
    # 192.168.13.23   hadoop3
    

3.配置集群/分布式环境

  • slaves

    hadoop1
    hadoop2
    hadoop3
    
  • core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1:9000</value>
        </property>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop/data/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
    </configuration>
    
    
  • hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop3:50090</value>
    
        </property>
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    
    </configuration>
    
  • mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • yarn-site.xml

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop2</value>
        </property>
    
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
       </property>
    </configuration>
    
    

4.ssh 无密码登录

  • 生成公钥和密钥

    ssh-keygen -t rsa	# 执行该命令后,遇到提示信息,一直按 Enter 键就可以了
    cd ~/.ssh
    cat ./id_rsa.pub >> ./authorized_keys	# 将公钥赋予给authorized_keys
    sudo chmod 644 authorized_keys			# 修改权限
    
  • 测试是否成功

    ssh hadoop1
    ssh hadoop2
    ssh hadoop3
    

    如果不用输入密码,则配置成功

克隆虚拟机

如果启动过伪分布模式

  • 删除 tmp 目录(如果有)
  • 删除 logs 下的所有文件(如果有)

把上述步骤做完之后再克隆虚拟机会方便很多

更改另外两台主机名

参照 1.修改主机名

更改另外两台虚拟机的 hosts

参照 2.设置 hosts 文件

格式化 namenode

hdfs namenode -format

启动集群

  • 在 hadoop1 上运行 start-dfs.sh
  • 在 hadoop2 上运行 start-yarn.sh

正确结果如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见错误

  • 虚拟机上面的网络图标不见了在这里插入图片描述
    解决方法:

    sudo service network-manager stop
    sudo rm /var/lib/NetworkManager/NetworkManager.state
    sudo service network-manager start
    # 如果出现图标了,则不进行下面步骤
    	
    sudo gedit /etc/NetworkManager/NetworkManager.conf
    # 把false改成true
    
    sudo service network-manager restart
    
  • 启动集群后 hadoop1 有DataNode,hadoop2、hadoop3 没有 DataNode
    解决方法:
    编辑 slaves ,看看是否跟下图所示一样
    在这里插入图片描述
    改完之后,把文件复制到另外两台虚拟机上

    cd $HADOOP_HOME/etc/hadoop
    rsync -av * hadoop2:$HADOOP_HOME/etc/hadoop
    rsync -av * hadoop3:$HADOOP_HOME/etc/hadoop
    

    并且删除每个 hadoop 虚拟机下的 tmp 目录

    cd $HADOOP_HOME/data
    sudo rm -r tmp
    

    在 hadoop1 重新进行格式化

    hdfs namenode -format
    

猜你喜欢

转载自blog.csdn.net/weixin_44018458/article/details/110240121