Hadoop 集群搭建

原创
2016-09-24
杜亦舒
性能与架构
性能与架构

性能与架构

微信号
yogoup

功能介绍
网站性能提升与架构设计


目标

在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序

搭建思路

(1)准备基础设施

准备3台服务器,分别命名为 master、slave1、slave2

互相配置为 SSH 免密码登录,并都安装好 JAVA 环境

(2)安装配置 hadoop

在 master 上下载解压 hadoop,修改相应配置文件,包括:

core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves

配置文件比较多,但也比较好理解

core-site.xml 是核心配置,需要为 hadoop 指定基本配置信息

hdfs 和 mapreduce 是核心构成,自然要配置相应的 hdfs-site.xml 和 mapred-site.xml

mapreduce 用到了 yarn 框架,所以也要设置对应的配置文件 yarn-site.xml

还需要在 slaves 中添加从节点的IP

配置完成后,把 master 上的 hadoop 目录复制到 slave1 slave2

(3)启动 hadoop

在 master 中进行 hdfs 初始化,执行启动命令,打开相应网页查看状态信息

搭建过程

  • 准备基础设施

(1)为3台服务器设置名称

修改每台服务器的 /etc/hosts,添加

192.168.31.164 master
192.168.31.242 slave1
192.168.31.140 slave2

(改为自己服务器的IP)

(2)SSH无密码登陆

在每台服务器上都执行以下命令

$ ssh-keygen
(执行后会有多个输入提示,不用输入任何内容,全部直接回车即可)
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@master
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@slave1
$ ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@slave2

注:JAVA环境的安装配置没做介绍,请自己准备好

  • 安装配置 hadoop

(1)安装

在 master 中执行

$ cd /home
$ wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
$ tar -xzf hadoop-2.7.3.tar.gz
$ mv hadoop-2.7.3 hadoop
$ cd hadoop
$ mkdir tmp hdfs
$ mkdir hdfs/data hdfs/name

(2)配置

在 master 中执行

修改 /home/hadoop/etc/hadoop/core-site.xml

在 <configuration> 块儿中添加:

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>

修改 /home/hadoop/etc/hadoop/hdfs-site.xml

在 <configuration> 块儿中添加:

<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

修改 /home/hadoop/etc/hadoop/mapred-site.xml

这个文件默认不存在,需要从 mapred-site.xml.template 复制过来

$ cp mapred-site.xml.template mapred-site.xml

在 <configuration> 块儿中添加:

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>

修改 /home/hadoop/etc/hadoop/yarn-site.xml

在 <configuration> 块儿中添加:

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>

修改 /home/hadoop/etc/hadoop/slaves

删除已有内容,添加:

slave1
slave2

修改 /home/hadoop/etc/hadoop/hadoop-env.sh

找到 export JAVA_HOME=${JAVA_HOME},改为自己JAVA_HOME的绝对路径

(3)复制 hadoop 到 slave1,slave2

在 master 上执行

$ scp -r /home/hadoop slave1:/home
$ scp -r /home/hadoop slave2:/home

注意:如果各台服务器中JAVA_HOME位置不同,记得对 hadoop-env.sh 进行相应修改

(4)设置 hadoop 环境变量

在每台服务器上都执行:

$ vim ~/.bashrc

添加:

export PATH=$PATH:/home/hadoop/bin:/home/hadoop/sbin

保存退出

$ source ~/.bashrc

  • 启动 hadoop

在master启动hadoop,从节点会自动启动

初始化

$ hdfs namenode -format

启动

$ hadoop-daemon.sh start namenode
$ hadoop-daemon.sh start datanode
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver

检查

查看状态,在3台服务器上分别执行

$ jps

浏览器中访问:

http://master ip:50070/

http://master ip:8088/

可以正常访问的话,可以说明集群启动成功了,但不一定可以正常运行,还需要下面的实际验证

测试验证

(1)hdfs 操作

创建目录

$ hdfs dfs -mkdir -p /user/hadoop/input

上传文件,把现有的一些配置文件上传到刚刚创建的目录中

$ hdfs dfs -put /home/hadoop/etc/hadoop/kms*.xml /user/hadoop/input

如果没有返回错误信息,说明操作成功

访问 http://master ip:50070/,在文件浏览页面查看

(2)mapreduce 操作

hadoop 安装包中提供了一个示例程序,我们可以使用它对刚刚上传的文件进行测试

$ hadoop jar /home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'

注:在执行过程中,如果长时间处于 running 状态不动,虽然没有报错,但实际上是出错了,后台在不断重试,需要到 logs 目录下查看日志文件中的错误信息

环境搭建完成,内容较长,感谢阅读,希望对想要搭建hadoop环境的朋友有点帮助

点击“阅读原文”查看 文章列表

赞赏

人赞赏

精选留言

该文章作者已设置需关注才可以留言

写留言

该文章作者已设置需关注才可以留言

写留言


加载中
以上留言由公众号筛选后显示

了解留言功能详情

最新文章

  1. 最大半连通子图 bzoj 1093
  2. 从Microsoft.AspNet.Identity看微软推荐的一种MVC的分层架构
  3. HDU 5478 Can you find it(快速幂)
  4. [转载]C#字符串加密和解密
  5. tcxtreelist Properties的使用(TcxImageComboBoxProperties)
  6. jquery 1.9里面已经删除了toggle(fn1, fn2)函数
  7. JS三元运算符
  8. JaCoCo&#160;代码覆盖率工具(基于Maven+TestNG)
  9. 怎样在Win7系统建立并开启Wifi热点
  10. redis新手入门,摸不着头脑可以看看&lt;三&gt;——lrange分页
  11. jquery获取选中的文本和值
  12. java ---日期的格式化
  13. 机器学习基石:14 Regularization
  14. java基础(七)-----深入剖析Java中的装箱和拆箱
  15. WordPress plugin Contact Form [CSRF → LFI] vulnerable 2019-03-17
  16. java----八种排序算法
  17. HMM拓扑与转移模型
  18. Object.assign方法的使用
  19. centos7编译安装Python3所需要的库(模块)依赖
  20. Luogu P1337 [JSOI2004]平衡点 / 吊打XXX

热门文章

  1. 2015 百度之星 1003 棋盘占领 dfs
  2. Pointers and Strings
  3. GDB的一些技巧
  4. 如何释放 DB_RECOVERY_FILE_DEST_SIZE
  5. html Frame、Iframe、Frameset 的区别 详细出处参考:http://www.jb51.net/web/22785.html
  6. Log4net的一点改进
  7. Shadow Map 原理和改进 【转】
  8. 跟着辛星一起用CSS美化商品列表
  9. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較
  10. Node.js mm131图片批量下载爬虫1.00 iconv协助转码