hadoop+yarn完全分布式搭建指南

开山

规划说明:

正常的集群部署规划

NameNode和 SecondaryNameNode(次要)的内存占用是一比一,所以尽量不要将这两个组件放在一个节点上
hdfs包括三个组件: NamoNode, DataNode, SecondaryNameNode
yarn包括两个组件:NodeManager,ResourceManager(这个组件是资源管理的老大,占用内存也很高,所以要避开NameNode和SecondaryNameNode)

但是为了达到最简最方便,我们这样部署集群

准备步骤:

  1. 开启虚拟机,并设置静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33 

1. 进入后将BOOTPROTO改为static,就是将IP分配模式从dhcp改为静态
2. 然后将ONBOOT改为yes,就是将网卡设置为开机启用
3. 然后在下方添加
   1. IPADDR=静态ip
   2. GATEWAY=默认网关
   3. NETMASK=子网掩码
   4. DNS1=第一个dns地址
   5. DNS2=第二个dns地址
4. 然后:esc+:wq保存退出
5. 重启网络:service network restart
6. 查看ip:ip addr
7. 测试网络是否连通:ping 
  1. 更改主机名称

hosenamectl set-hostname 主机名称
  1. 更改ip主机名称映射文件

vi /etc/hosts
#此处我们可以采用分发,这个配置文件需要更新
  1. 关闭防火墙,并且关闭防火墙开机自启动

#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#关闭防火墙开机自启动
systemctl disable firewalld
#注意:关闭防火墙开机自启动必须在关闭防火墙后才能设置
  1. 设置ssh免密登陆

#生成公钥和私钥
ssh-keygen -t rsa
#拷贝公钥到主机
ssh-copy-id 主机名或ip
#三个主机需要互相拷贝,自己也要给自己拷贝一份
  1. 然后用Xshell连接上,将jdk.tar.gz和hadoop.tar.gz传输到虚拟机上并解压

#解压
tar xvf jdk -C 路径

分布式正式搭建

说明:

下面是我们搭建集群需要配置的文件,我们在master上面配置好,然后分发到slave1和slave2上面,我们这次就不用单点启动,直接群起.

(这两种方式只是命令的不同,单点启动已经过时,不过新的命令也只是在老命令上面做了一层封装),

这些配置文件都在hadoop-x.x.x/etc/hadoop/下

hdfs:分布式文件系统

yarn:包(资源)管理系统

MapReduce:数据分布浅清洗

  • hdfs配置

  • hadoop-env.sh

  • core-site.xml

  • hdfs-site.xml

  • yarn配置

  • yarn-env.sh

  • yarn-site.xml

  • MapReduce配置

  • mapred-env.sh

  • mapred-site.xml

  • slave配置

详细步骤

为了之后的配置方便,我们事先在/root/下写好一个模板
命令: vi /root/tempalte <property> <name></name> <value></value> </property> #之后我们可以在vi的命令模式下,通过 :r ~/template来拉取模板
注意:下面配置的xml文件标签对中,不能出现空格

配置环境变量:

我们解压好hadoop和jdk之后,然后我们配置环境变量,

vi /etc/profile.d/java.sh
vi /etc/profile.d/hadoop.sh
#也可以为了方便将两个文件的内容合为一个
#例如:vi /etc/profile.d/jdk-hadoop.sh
#内容:
export JAVA_HOME=jdk真实路径
export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=hadoop真实路径
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#注意:hadoop下有bin和sbin,这两个都是库,我们需要都配置上

配置好环境变量后我们进行测试

#在测试之前我们更新一下配置文件
source /etc/profile.d/jdk-hadoop.sh
#然后我们测试命令

配置slaves:这是数据节点集合(有几个数据节点,就添加几个)

在配置这个文件的时候:请特别注意:不允许有空行,文末不允许有空格

master
slave1
slave2

hdfs:

  1. hadoop-env.sh

配置JAVA_HOME的真实路径
  1. core-site.xml

指定hdfs中的NameNode的地址
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master:9000</value>
</property>
指定hadoop运行是产生文件的存储路径
<property>
	<name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-x.x.x/data/data-tmp</value>
</property>
  1. hdfs-site.xml

指定数据的副本数量
<property>
	<name>dfs.replication</name>
    <value>3</value>
</property>
指定secondarynamenode节点地址
 <property>
      <name>dfs.namenode.secondary.http-address </name>
      <value>master:50090</value>
 </property>

yarn:

  1. yarn-env.sh

配置JAVA_HOME的真实地址
  1. yarn-site.xml

指定数据的获取方式
<property>
	<name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>        
yarn的资源管理器的地址
<property>
	<name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>

MapReduce:

  1. mapred-env.sh

配置JAVA_HOME的真实地址
  1. mapred-site.xml

指定资源处理运行在yarn上
<property>
	<name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

配置文件分发

好了,现在我们就配置完成了,但是我们只是配置了master,另外两台机器并没有配置文件,这里我们通过master将配置文件分发过去

#将配置文件发给slave1
scp -r /opt/hadoop-x.x.x/etc/hadoop/ slave1:/opt/hadoop-x.x.x/etc/hadoop/

群雄并起

接下来我们就可以开启集群了,不过在开启集群之前我们需要格式化一下namenode
#第一次启动格式化,以后就不要总格式化,  如果不是第一次格式化,那么就需要停掉进程,然后rm掉data和logs文件,然后再进行格式化
#原因:我们在格式化的时候会生成一个namenodeID,如果我们不删除掉data和logs的话,那么第二次格式化的时候会又生成一个ID,当机器对照ID的时候就会报错
hdfs namenode -format

烽火狼烟

这个时候就可以正式启动集群了
先启动hdfs
#此处我们采用简单的集成命令 start-dfs.sh #启动之后用jps(Java ps)查看进程,三个机器都要查看
然后我们启动yarn
#此处我们采用简单的集成命令 start-yarn.sh #启动之后用jps(Java ps)查看进程,三个机器都要查看
接下来进入浏览器查看一下
进入master的50090端口查看hdfs是否成功
进入master的8088端口查看yarn是否成功

奉诏讨贼

这个时候我们就可以进行集群的基本测试了
创建文件夹
hdfs dfs -mkdir -p /user/root/input
上传文件
hdfs dfs -put /tmp/ /
列出文件
hdfs dfs -ls /
删除文件
hdfs dfs -rm -r /user/root/input
使用wordcount
hadoop jar /opt/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input output

错误点:

上传文件的时候出现了: Name node is in safe mode.

这是因为现在hadoop的文件系统处于安全模式,我们一般等一会儿就好

,但是我们是不能等的,圣上的性命危在旦夕,这个时候我们就需要手动关闭

hadoop dfsadmin -safemode leave

然后我们重新上传就好

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值