Ubuntu 16.10 搭建 hadoop 2.7.3 完全集群

本文记录了在Ubuntu 16.10上搭建Hadoop 2.7.3完全分布式集群的详细步骤,包括创建用户组、安装SSH、配置主机无密码访问、安装Hadoop、配置环境变量、格式化节点、启动服务以及验证集群运行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu 16.10 搭建 hadoop 2.7.3 完全集群


最近在学习hadoop,在搭建完全分布式环境中的过程以及遇到的问题做一下记录。网上也有很多关于如何搭建hadoop的博客,不过大部分都是复制,粘贴。


  • 关于如何创建虚拟机,这里我不做介绍,网上有很多这方面的介绍。当然,如果你又条件,可以自己买服务器或者多台电脑玩。还有在安装之前要先安装jdk,以及设置jdk环境变量。

  • 创建hadoop用户组

groupadd hadoop
  • 添加hadoop用户
useradd -g hadoop -s /bin/bash -m hadoop

备注:-g 属于刚刚创建的 hadoop 组
     -s 是登录shell
     -m 为hadoop在/home 下自动创建用户文件夹 hadoop
  • 安装shh
apt-get install ssh
apt-get install rsync
apt-get install openssh-server

备注 : 对于ssh的详细安装,这里不做详解,请参看其他文章
  • 配置 主机(hadoop01) 节点可通过 SSH 无密码访问 从节点(hadoop02 , hadoop03)

    1. 生成私钥,公钥
ssh-keygen -t rsa
ssh-keygen -t rsa -P '' //表示空密码
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //追加到authorized_keys
chmod 600 authorized_keys //修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)
  • 将生成的 authorized_keys 文件复制到 hadoop02 和 hadoop03 的 .ssh目录下
scp ~/.ssh/authorized_keys hadoop@hadoop02:~/.ssh
scp ~/.ssh/authorized_keys hadoop@hadoop02:~/.ssh
  • 安装hadoop
    1、 从hadoop下载对应的tar.gz文件进行安装,这里选择的是2.7.3
    2、 解压文件
tar -zxvf hadoop-2.7.3.tar.gz
  • 配置 hadoop 的环境变量
vim /etc/profile

# set hadoop path
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin

source /etc/profile
  • 配置hadoop-env.sh,yarn-env.sh(export JAVA_HOME=/usr/java/jdk1.8.0_131),看到hadoop 2.7.3 中 hadoop-env.sh,yarn-env.sh 中默认使用的是 $JAVA_HOME , 但此处必须配置,不然启动的时候namenode和datanode会报找不到java_home 的错误

  • core-site.xml

<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop/tmp</value>
        </property>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
        </property>
        <property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
       </property>
</configuration>
  • hdfs-site.xml
<configuration>
        <property>
            <name>dfs.namenode.handler.count</name>
            <value>100</value>
        </property>
</configuration>

看到其他文章有用到dfs.namenode.name.dir等配置,这里我没有配置,用hadoop默认的就好,默认位置:
默认file://${hadoop.tmp.dir}/dfs/name
  • mapred-site.xml
<configuration>
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
</configuration>

看到其他文章有用到mapreduce.jobhistory.address等配置,这里我用默认的
  • yarn-site.xml
<configuration>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
    <property>
         <name>yarn.resourcemanager.hostname</name>
         <value>hadoop01</value>
     </property>
</configuration>

这里很多文章都是配置了一大串的 host:port,值需要配置 yarn.resourcemanager.hostname 就好,其他都会以这个作为host
  • 格式化节点 之前需要执行以下操作,不然执行wordcount程序会出现卡掉错误(以下ip是我局域网的ip,各自根据自己的ip进行修改)
 vi /etc/hosts
192.168.234.128 hadoop01
192.168.234.129 hadoop02
192.168.234.130 hadoop03

这里需要注意,去掉/etc/hosts 中127.0.0.1 等多余的配置
  • 修改hostname,各个机器上都需要修改,分别在各台机器上执行如下语句:
 hostname hadoop01
 hostname hadoop02
 hostname hadoop03
  • 好了,现在可以开始格式化节点了,在hadoop01上执行如下语句
bin/hdfs namenode -format

看到“successfully formatted”字样,表示,格式化成功。
format

  • 启动hadoop,在hadoop安装目录(比如我是/usr/local/hadoop),执行如下命令
sbin/start-all.sh 

在hadoop01,上用jps查看,namenode,ResourceManager是否启动

这里写图片描述

在hadoop02,03上用jps查看,datanode,NodeManager是否启动

这里写图片描述

这里写图片描述

  • 在hdfs的根目录下建立了一个test目录
hdfs dfs -mkdir /test
  • 创建一个words.txt 文件
vi words.txt

Hello Alfred
Hello World
Hello Tom
Hello Jack
Hello Hadoop
Bye   hadoop
  • 将words.txt上传到hdfs的根目录
hadoop fs -put words.txt /
  • 运行一个WordCount程序
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /words.txt /test/out

这里写图片描述

  • 运行成功, 查看运行结果(一步步执行下面语句看是否有运行成功文件)
 hdfs dfs -ls /
 hdfs dfs -ls /test
 hdfs dfs -ls /test/out
  hdfs dfs -cat /test/out/part-r-00000 //这里part-r-0000改为你自己的文件名

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值