Hadoop 集群搭建

目标

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

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维前线

php7下安装event扩展

php7下安装event扩展 有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口。 ...

336100
来自专栏不想当开发的产品不是好测试

git 简易使用说明

背景 代码用git管理,所以需要大家熟悉git工具的一些操作 目前我们自动化在develop分支上进行编写 前言 安装git,https://git-scm.c...

23250
来自专栏小尘哥的专栏

ES初体验

2、 将elasticsearch-workspace文件夹和software文件夹拷贝到linux系统根目录,如果已经存在则删除。

11410
来自专栏Java成神之路

ElasticSearch_学习_01_单实例安装与分布式安装

将下载的压缩文件解压成三份,分别重命名为: es-master 、es-slave1 、es-slave2

7620
来自专栏salesforce零基础学习

salesforce 零基础学习(二十)简单APP制作

本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_w...

25780
来自专栏IT可乐

Linux系列教程(十九)——Linux文件系统管理之手工分区

  上篇博客我们首先介绍了硬盘为什么要分区,以及Linux系统的几种分区类型,然后介绍了Linux系统几个常用的文件系统命令,最后讲解了挂载命令,并通过实例演示...

19470
来自专栏散尽浮华

Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)

在linux系统下,如果下载并安装了应用程序,在启动时很有可能在键入它的名称时出现"command not found"的提示内容。如果每次都到安装目标文件夹内...

33060
来自专栏smy

windows下nginx的安装及使用方法入门

nginx功能之一可以启动一个本地服务器,通过配置server_name和root目录等来访问目标文件 一. 下载 http://nginx.org/ 下载后解...

73140
来自专栏猛牛哥的博客

firewall端口转发的设置

1.2K30
来自专栏BeJavaGod

腾讯云SpringBoot部署 + HTTPS配置

springboot可以打包为jar和war,jar不多说了,最近的一个工程需要打包为war发布,大致说一下吧: 先看一下项目的大致结构: ? 第一步,需要排除...

61280

扫码关注云+社区

领取腾讯云代金券