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环境的朋友有点帮助

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

赞赏

人赞赏

精选留言

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

写留言

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

写留言


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

了解留言功能详情

Hadoop 集群搭建 mark的更多相关文章

  1. Hadoop 集群搭建

    Hadoop 集群搭建 2016-09-24 杜亦舒 目标 在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序 搭建 ...

  2. Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...

  3. Hadoop集群搭建安装过程(二)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(二)(配置SSH免密登录)(图文详解---尽情点击!!!) 一.配置ssh无密码访问 ®生成公钥密钥对 1.在每个节点上分别执行: ssh-keygen -t rsa(一 ...

  4. Hadoop集群搭建安装过程(一)(图文详解---尽情点击!!!)

    Hadoop集群搭建(一)(上篇中讲到了Linux虚拟机的安装) 一.安装所需插件(以hadoop2.6.4为例,如果需要可以到官方网站进行下载:http://hadoop.apache.org) h ...

  5. 大数据 --> Hadoop集群搭建

    Hadoop集群搭建 1.修改/etc/hosts文件 在每台linux机器上,sudo vim /etc/hosts 编写hosts文件.将主机名和ip地址的映射填写进去.编辑完后,结果如下: 2. ...

  6. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  7. Hadoop(二) HADOOP集群搭建

    一.HADOOP集群搭建 1.集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 Na ...

  8. 1.Hadoop集群搭建之Linux主机环境准备

    Hadoop集群搭建之Linux主机环境 创建虚拟机包含1个主节点master,2个从节点slave1,slave2 虚拟机网络连接模式为host-only(非虚拟机环境可跳过) 集群规划如下表: 主 ...

  9. 三节点Hadoop集群搭建

    1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2 ...

随机推荐

  1. Traefik的TLS配置

    生产环境的部署大多采用F5+ Traefik这种方式,因为Traefik的SSL方式相对来说比较慢,因此SSL更多的在F5上开放,而F5到Traefik之间以及后端都是http方式. 但客户需要在开发 ...

  2. sqlmap原理及使用方法

    1 . 介绍1.1 要求 1.2 网应用情节 1.3 SQL 射入技术 1.4 特点 1.5 下载和更新sqlmap 1.6 执照 2 . 用法2.1 帮助 2.2 目标URL 2.3 目标URL 和 ...

  3. Java中PriorityQueue详解

    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...

  4. Android 发送短信总结

    SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...

  5. string 与BigDecimal互转

    小编知道在java中数据类型非常 的严格了,我们如果一个地方不小心就会导致应用出问题了,今天 小编就在string 转BigDecimal上碰到了一些问题,下面整理了几个例子大家一起来看看.   例子 ...

  6. Windows内存管理

    本博文很大程度上参考了,潘爱民先生的<Windows内核原理与实现>一书,在此对他表示感谢. 记得是在学C语言指针的时候,首次比较实际的使用内存寻址.也是在那个时候知道不能使用未初始化的指 ...

  7. java调用机器上的shell脚本

    java调用机器上的shell脚本,可以这样方便的通过shell脚本调用本机的C.C++等程序 Process process = null; Runtime runTime = Runtime.ge ...

  8. 初始化linux环境

    初始化linux环境 1. 新建用户组 addgroup admin //假定为admin用户组 2. 新建用户 useradd -d /home/work -s /bin/bash -m work ...

  9. sublime text 2中“ctrl + `”快捷键无效

    之前sublime 使用正常,这次在装插件的时候,发现ctrl + `快捷键失效了,无法调出控制台. 然后就一直按这两个键,肯定是被别的占用了,所以就像看看有啥反应,看了半天都没有见到什么神奇的窗口跳 ...

  10. 使用WinScp连接远程服务器和传输文件

    早在3月份,我就使用到了WinScp,WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议. 它的主要功能就是在本地与远程计算机间安全的复制文件..WinSc ...