热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Hadoop】VM虚拟机上搭建Hadoop集群

一、背景这件事做了N次,每次因为各种原因失败(比如,环境配置,hadoop参数设置),终于在春节

一、背景

      这件事做了N次,每次因为各种原因失败(比如,环境配置,hadoop参数设置),终于在春节前夕搞定。

     主要流程参照TMH_ITBOY的文章进行,再结合个人需求进行调整。

     在此记录和分享一下。

 

二、部署规划

集群部署规划

 

三、流程

【Step 1】 VMware新建虚拟机

补充:

(1)VMware 15.0.3下载

(2)虚拟机存储位置改为如下(提前规划)

主机hadoop1: .\Virtual Machines\hadoops\hadoop1
主机hadoop2: .\Virtual Machines\hadoops\hadoop2
主机hadoop3: .\Virtual Machines\hadoops\hadoop3
主机hadoop4: .\Virtual Machines\hadoops\hadoop4
主机hadoop5: .\Virtual Machines\hadoops\hadoop5

(3)虚拟机内存除hadoop1外,其他设为1G(因为我的笔记本内存小)


【Step 2】为虚拟机安装CentOS 6.7 64位系统

补充:

(1)我选择的是CentOS-6.7-x86_64-bin-DVD1.iso

 

【Step 3】CentOS 6.7 网络配置等,及JDK的安装

补充:

(1)每个主机MAC地址(物理地址)会不一致,子网掩码和网卡地址是一致的;

(2)编辑网卡时,记得同时修改IPADDR(例子如下);(保存退出后,重启网关无效的话,关机重启试一下)

网关:192.168.93.2
原IP:192.168.93.120
修改跟网关在一个网段(有规律,方便记忆即可):hadoop1:192.168.93.121hadoop2:192.168.93.122hadoop3:192.168.93.123hadoop4:192.168.93.124hadoop5:192.168.93.125

(3)在Xshell中永久保存ssh连接窗口:Xshell-文件-打开(Xshell连接虚拟机时,记得虚拟机先手动开机)

 

【Step 4】虚拟机克隆,及Hadoop环境配置与安装

补充:

(1)hadoop配置文件(为了方便比较,这部分我会全部列出来)


  • hadoop-env.sh

# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.# The java implementation to use.#在这里添加JDK安装目录的环境变量
export JAVA_HOME=/home/java/jdk1.7.0_79# The jsvc implementation to use. Jsvc is required to run secure datanodes

  • core-site.xml

fs.defaultFShdfs://hadoop1:9000

hadoop.tmp.dir/home/hadoop/apps/hadoop-2.7.5/data


  • hdfs-site.xml

dfs.replication2

dfs.secondary.http.addresshadoop1:50090

  • mapred-site.xml(将mapred-site.xml.template改成mapred-site.xml)

mapreduce.framework.nameyarn


  • yarn-site.xml

yarn.resourcemanager.hostnamehadoop2

yarn.nodemanager.aux-servicesmapreduce_shuffle


  • slaves(先清空,再添加)

hadoop3
hadoop4
hadoop5

(2)因为我的namenode(hadoop1)和resourcemanager(hadoop2)是物理分离的,所以在配置主机间的ssh免密通信时,不仅要配置hadoop1-->hadoop2,hadoop3,hadoop4,hadoop5,还要配置hadoop2-->hadoop1,hadoop3,hadoop4,hadoop5的;

(3)初始化HDFS的操作,只在需要在第一次使用时格式化即可。如果使用后多次格式化,会导致子节点的cluster_id跟主节点的cluster_id不一致,这时候就需要手动一个个修改。

 

【Step 5】启动集群

1. 启动HDFS

在namenode(hadoop1)上启动:start-dfs.sh 检查启动是否成功:hadoop dfsadmin -report # 都为0的话,肯定是异常查看进程:jps # 无对应的进程的话,说明启动失败

我遇到的问题及解决办法:

(1)namenode和datanode都启动失败(无进程):


  • 关防火墙(每个节点都需要一个个去关闭!!!)

临时打开防火墙:service iptables start
临时关闭防火墙:service iptables stop
查看防火墙状态:sudo service iptables status永久开启防火墙: chkconfig iptables on
永久关闭防火墙: chkconfig iptables off

(2)namenode启动成功,datanode启动失败(无进程)


  • 只关了namenode的防火墙,没关datanode们的;
  • 多次格式化hdfs,导致namenode和datanode们的cluster_id不一致:需要手动去修改datanode们的cluster_id

1.在namenode主机上(hadoop1),查看和记录namenode的clusterID:
cat /home/hadoop/apps/hadoop-2.7.5/data/dfs/name/current/VERSION2.分别切换到hadoop3、hadoop4、hadoop5,修改datanode上的clusterID,使其与datanode的一致:
vim /home/hadoop/apps/hadoop-2.7.5/data/dfs/data/current/VERSION

2. 启动YARN

在resourcemanager机器(hadoop2)上启动: start-yarn.sh检查进程:jps

 

【Step 6】使用wordcount进行测试

1.上传文件到HDFS
创建文件夹:hadoop fs -mkdir -p /wordcount/input
从本地上传文件至hdfs:hadoop fs -put /home/HADOOP/Downloads/words.txt /wordcount/input2.运行一个mapreduce程序
切换jar包路径:cd $HADOOP_HOME/share/hadoop/mapreduce/
跑mr程序:hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input /wordcount/output # /wordcount/output为输出路径,不需提前创建3.查看结果
hadoop fs -cat /wordcount/output/words.txt

 

四、其他

1.Hadoop命令手册

 


推荐阅读
author-avatar
我才不要喜欢你了
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有