前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop 集群搭建

Hadoop 集群搭建

作者头像
dys
发布2018-04-04 10:11:16
4.8K1
发布2018-04-04 10:11:16
举报
文章被收录于专栏:性能与架构

目标

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标
  • 搭建思路
  • 搭建过程
  • 测试验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档