Hadoop完全分布式搭建 【可行】

Hadoop集群搭建
本文详细介绍如何从单节点环境扩展到包含三个节点的小型Hadoop集群,包括规划、配置网络、安装软件、设置环境变量以及启动验证等关键步骤。

包含图片: http://www.jianshu.com/p/307815253fa8

1. 首先根据之前的文章搭建好hadoop单节点环境
2. 分布式集群规划
名称  IP  HDFS    YARN
master  192.168.56.100  NameNode    ResourceManager
data1   192.168.56.101  DataNode    NodeManager
data2   192.168.56.102  DataNode    NodeManager
3. 使用VirtualBox的复制功能创建 data1
    a. 注意:在使用复制时,要勾选 【重新初始化所有网卡的MAC地址】和【完全复制】
    b. 给data1 设置两个网卡 一个用来连接外网(使用dhcp),一个在虚拟机间互联(使用静态IP)
        i. 网卡1设置为网络地址转换NAT
        ii. 网卡2 点击【启动网络连接】,设置为 仅主机适配器 
4. 配置data1
    a. 配置网络配置文件
    sudo gedit /etc/network/interfaces
        # interfaces(5) file used by ifup(8) and ifdown(8)
        auto lo
        iface lo inet loopback
        # NAT        网卡1
        auto eth0
        iface eth0 inet dhcp
        # host only     网卡2
        auto eth1
        iface eth1 inet static
        address      192.168.56.101
        netmask      255.255.255.0
        network      192.168.56.0
        broadcast    192.168.56.255
    b. 设置主机名
    sudo gedit /etc/hostname
    data1
    #  重启电脑
    c. 编辑hosts文件    设置主机名和IP地址间的映射
    sudo gedit /etc/hosts
        127.0.0.1   localhost
        127.0.1.1   hadoop

        192.168.56.100  master
        192.168.56.101  data1
        192.168.56.102  data2
        192.168.56.103  data3
    d. 编辑core-site.xml
    sudo gedit core-site.xml
        <configuration>
        <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>    # 与单节点相比 改动为master
        </property>
        </configuration>
    e. 编辑yarn-site.xml        # 拷贝时去掉注释!
    sudo gedit yarn-site.xml       
        <configuration>

        <!-- Site specific YARN configuration properties -->
        <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
        <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>

         # 设置ResourceManager和NodeManager的连接地址
        #NodeManager通过该地址向ResourceManager汇报运行情况
        <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>              
        <value>master:8025</value>
        </property>

        # 设置ResourceManager和ApplicationMaster的连接地址
        #ApplicationMaster通过该地址向ResourceManager申请资源、释放资源
        <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
        </property>

         # 设置ResourceManager和客户端的连接地址
        #客户端通过该地址向ResourceManager注册应用程序、删除应用程序
        <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8050</value>
        </property>
        </configuration>

    f. 编辑mapred-site.xml
    sudo gedit mapred-site.xml
        <configuration>
        <property>
        <name>mapred.job.tracker</name>
        <value>master:54311</value>
        </property>
        </configuration>
    g. 编辑hdfs-site.xml
    sudo gedit hdfs-site.xml
        <configuration>
        <property>
        <name>dfs.replication</name>
        <value>2</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>       #data1 做datanode 不用namenode 删去即可
        <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
        </property>
        </configuration>
    h. 保证网络配置正确,可以上网
    ifconfig
5. 复制data2,master
6. 设置data2
    a. 配置网络配置文件
    sudo gedit /etc/network/interfaces
        # interfaces(5) file used by ifup(8) and ifdown(8)
        auto lo
        iface lo inet loopback
        # NAT        网卡1
        auto eth0
        iface eth0 inet dhcp
        # host only     网卡2
        auto eth1
        iface eth1 inet static
        address      192.168.56.102
        netmask      255.255.255.0
        network      192.168.56.0
        broadcast    192.168.56.255
    b. 设置主机名
    sudo gedit /etc/hostname
    data2
    #  重启电脑
7. 设置master
    a. 配置网络配置文件
    sudo gedit /etc/network/interfaces
        # interfaces(5) file used by ifup(8) and ifdown(8)
        auto lo
        iface lo inet loopback
        # NAT        网卡1
        auto eth0
        iface eth0 inet dhcp
        # host only     网卡2
        auto eth1
        iface eth1 inet static
        address      192.168.56.100
        netmask      255.255.255.0
        network      192.168.56.0
        broadcast    192.168.56.255
    b. 设置主机名
    sudo gedit /etc/hostname
    master
    #  重启电脑
    c. 编辑hdfs-site.xml
        <configuration>
        <property>
        <name>dfs.replication</name>
        <value>3</value>
        </property>
        <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
        </property>
        </configuration>
    d. 创建并编辑master文件
    sudo gedit masters
        master
    e. 编辑slaves文件
    sudo gedit slaves    # 用来确定DataNode
        data1
        data2
    f. 重启master
8. 创建及修改master、data1、data2的目录
    a. 在master中使用ssh data1 登录data1 执行以下操作
     sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs      #删除hdfs已有的目录
     mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode   # 创建datanode 目录
    sudo chown -R hduser:hduser /usr/local/hadoop       #更改目录所有者
    b. 在master中使用ssh data2 登录data2 执行以下操作
     sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs      #删除hdfs已有的目录
     mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode   # 创建datanode 目录
    sudo chown -R hduser:hduser /usr/local/hadoop       #更改目录所有者
    c. 在master中执行以下操作
     sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs      #删除hdfs已有的目录
     mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode   # 创建namenode 目录
    sudo chown -R hduser:hduser /usr/local/hadoop       #更改目录所有者
    d. 格式化NameNode HDFS目录
    hadoop namenode -format
9. 启动集群
    a. start-all.sh  (等同于 start-dfs.sh 和 start-yarn.sh)
    b. 查看master,data1,data2的启动的进程
    jps
        master  Jps 
            ResourceManager
            NameNode
            SecondaryNameNode
        data1   NodeManager 
            DataNode 
            Jps
        data2   NodeManager 
            DataNode 
            Jps
    c. 在浏览器中输入http://localhost:8088查看 Hadoop ResourceManager Web 界面
        i. 点击Nodes 查看当前节点

    d. 在浏览器中输入http://localhost:50070 查看NameNode HDFS Web 界面

        点击Datanodes 显示当前启动的Datanode
10. data1中的命令参考
   72  sudo gedit /etc/network/interfaces
   73  ifconfig
   74  sudo gedit /etc/home
   75  ll -d /etc/home
   76  sudo gedit /etc/hostname
   77  sudo gedit /etc/hosts
   78  ifconfig
   79  cd /usr/local/hadoop/etc/hadoop/
   80  ll
   81  sudo gedit core-site.xml
   82  sudp gedit yarn-site.xml
   83  sudo gedit yarn-site.xml
   84  sudo gedit mapred-site.xml
   85  sudo gedit hdfs-site.xml
   86  ifconfig
   87  jps
   88  exit
   89  jps
   90  cd /usr/local/hadoop/etc/hadoop/
   91  ll
   92  sudo gedit hdfs-site.xml
   93  sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
   94  mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
   95  sudo chown -R hduser:hduser /usr/local/hadoop
   96  jps
   97  history
<think>嗯,用户这次明确提出要查找使用两台主机搭建Hadoop完全分布式系统的方法,而且引用了四篇相关文章。从引用内容看,[1]明确提到使用两台CentOS 7搭建Hadoop-3.1.4集群的经历,[2][3][4]则补充了分布式搭建的通用步骤和注意事项。 用户上次的问题是关于快速排序,这次突然转向Hadoop集群搭建,可能是大数据课程的实验需求。ta特意强调“两台主机”,说明资源有限(比如学生用个人电脑),且引用[1]的作者也提到“考虑到电脑安装了很多其他东西”,这种场景很常见。 重点要解决的核心矛盾是:Hadoop完全分布式通常要求至少3个节点(1主2从),但用户只有两台机器。可行的方案是把一台机器同时作为NameNode和DataNode(主节点也存数据),另一台单纯作为DataNode。这样既能满足分布式存储计算需求,又节省资源。引用[4]提到的SSH无密登录和workers配置正是关键。 需要特别注意的坑点:主节点同时运行DataNode可能导致资源紧张(引用[1]提到Hadoop-3.1.4版本稳定,建议沿用);hosts文件必须精确配置(如引用[3]强调的IP映射);web界面访问问题在引用[4]的标题里被特别警示。 用户可能遇到的隐性困难:CentOS 7的防火墙配置(引用里没提但实际必做)、两台机器时间同步(分布式基础)、Java环境差异(引用[2]的实验一可能涉及)。这些都要在步骤里提前预警。 </think>基于两台CentOS 7主机搭建Hadoop-3.1.4完全分布式集群的完整步骤如下(关键配置已加粗): --- ### **一、环境准备** 1. **系统要求** - 两台CentOS 7主机(分别命名为`master`和`slave1`) - **关闭防火墙**(必要步骤): ```bash systemctl stop firewalld && systemctl disable firewalld ``` - **同步时间**(避免节点间时间差异): ```bash yum install -y ntp && ntpdate ntp.aliyun.com ``` 2. **网络配置** - 修改主机名(分别执行): ```bash # master主机 hostnamectl set-hostname master # slave1主机 hostnamectl set-hostname slave1 ``` - **配置hosts映射**(两台主机均需操作): ```bash vim /etc/hosts ``` 添加内容(IP需替换为实际内网IP): ``` 192.168.1.101 master 192.168.1.102 slave1 ``` > [^3] --- ### **二、SSH免密登录配置** 1. **生成密钥对**(两台主机均执行): ```bash ssh-keygen -t rsa ``` 2. **互传公钥**(在master执行): ```bash ssh-copy-id master # 本机互信 ssh-copy-id slave1 # 将公钥传到slave1 ``` > [^4] --- ### **三、Java与Hadoop安装** 1. **安装JDK 8**(两台主机均需安装) ```bash tar -zxvf jdk-8u391-linux-x64.tar.gz -C /opt/module/ ``` 2. **解压Hadoop-3.1.4**(仅在master操作,后续分发) ```bash tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/ ``` --- ### **四、关键配置文件修改** > 以下操作均在`master`节点的`/opt/module/hadoop-3.1.4/etc/hadoop/`目录进行 > **配置后需同步到slave1**:`scp -r hadoop-3.1.4 root@slave1:/opt/module/` | 配置文件 | 修改内容 | |----------------|-------------------------------------------------------------------------| | **core-site.xml** | ```xml<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value></property>``` | | **hdfs-site.xml** | ```xml<property> <name>dfs.replication</name> <value>2</value> <!-- 副本数为2 --></property>``` | | **workers** | 删除`localhost`,添加:<br>`master` <br> `slave1` <!-- 指定DataNode节点 --> | | **yarn-site.xml**| ```xml<property> <name>yarn.resourcemanager.hostname</name> <value>master</value></property>``` | > [^1][^4] --- ### **五、集群启动与验证** 1. **格式化HDFS**(仅在master执行一次) ```bash hdfs namenode -format ``` 2. **启动集群** ```bash # 启动HDFS sbin/start-dfs.sh # 启动YARN sbin/start-yarn.sh ``` 3. **验证服务** - **Web UI**: - NameNode: `http://master:9870` - ResourceManager: `http://master:8088` - **节点状态**: ```bash hdfs dfsadmin -report # 应显示master和slave1两个DataNode ``` > 若Web界面无法访问,检查防火墙是否关闭,或尝试`netstat -tunlp | grep <端口号>`确认服务监听状态[^4]。 --- ### **六、常见问题解决** 1. **DataNode未启动** - 检查`workers`文件是否包含正确的节点名 - 删除所有节点的`/tmp/hadoop-*`和`/opt/module/hadoop-3.1.4/logs/`后重新格式化 2. **主机名解析失败** - 确认`/etc/hosts`中IP与主机名对应关系正确 - 执行`ping slave1`测试连通性 #####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值