Hadoop的运行模式

Hadoop一般有三种运行模式,分别是:

  • 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统。,用于开发和调试。
  • 伪分布式模式(Pseudo Distrubuted Mode),使用的是分布式文件系统,守护进程运行在本机机器,模拟一个小规模的集群,在一台主机模拟多主机,适合模拟集群学习。
  • 完全分布式集群模式(Full Distributed Mode),Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

这里介绍的就是如何搭建一个Hadoop完全分布式集群。

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

安装环境介绍

准备了四个服务器,IP为192.168.0.236、192.168.0.237、192.168.0.238、192.168.0.239,其中192.168.0.236作为主节点,其他3个作为从节点。具体版本信息如下:

  • CentOS 7.4
  • JDK 8
  • Hadoop 2.10.0

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

准备安装环境

设置主机名

在各个服务器上修改对应的主机名:

#在192.168.0.236上执行:
hostnamectl set-hostname onemore-hadoop-master #在192.168.0.237上执行:
hostnamectl set-hostname onemore-hadoop-slave1 #在192.168.0.238上执行:
hostnamectl set-hostname onemore-hadoop-slave2 #在192.168.0.239上执行:
hostnamectl set-hostname onemore-hadoop-slave3

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

关闭SELINUX

编辑/etc/selinux/config文件:

vi /etc/selinux/config

SELINUX=enforcing

修改为:

SELINUX=disabled

重启服务器

reboot

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

设置hosts

cat >> /etc/hosts <<EOF

192.168.0.236 onemore-hadoop-master
192.168.0.237 onemore-hadoop-slave1
192.168.0.238 onemore-hadoop-slave2
192.168.0.239 onemore-hadoop-slave3
EOF

关闭防火墙

停止防火墙

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

设置免密登录

分布式集群搭建需要主节点能够免密登录至各个从节点上。因此,需要在主节点上生成公钥,把将主节点的公钥在从节点中加入授权。

  1. 在192.168.0.236上生成公钥。
ssh-keygen -t rsa
  1. 在192.168.0.236上,把公钥发送到各个从节点
scp ~/.ssh/id_rsa.pub 192.168.0.237:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.238:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.239:~/.ssh

这时还不是免密登录登录的,需要输入用户名和密码。

  1. 将公钥追加到各个从节点的授权里。

在每个从节点执行一下命令:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

安装JDK

参见之前的《详解在Linux系统中安装JDK》,这里就不再赘述了。

Hadoop环境配置

主节点配置

下载Hadoop

从北京理工大学的镜像上下载Hadoop:

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

创建文件夹

mkdir /usr/local/hadoop

解压

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

配置环境变量

追加Hadoop的环境变量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin
EOF

使环境变量生效

source /etc/profile

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

修改配置文件

修改core-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml

修改其内容为:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://onemore-hadoop-master:9000</value>
</property>
</configuration>

修改hdfs-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml

修改其内容为:

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>

复制mapred-site.xml.template为mapred-site.xml

cp /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

再修改mapred-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

修改其内容为:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://onemore-hadoop-master:9001</value>
</property>
</configuration>

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

修改yarn-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml

修改其内容为:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>onemore-hadoop-master</value>
</property>
</configuration>

新建masters配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters

新增内容为:

onemore-hadoop-master

配置slaves文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

修改其内容为:

onemore-hadoop-slave1
onemore-hadoop-slave2
onemore-hadoop-slave3

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

从节点配置

下面以onemore-hadoop-slave1从节点为例进行叙述,您需参照以下步骤完成onemore-hadoop-slave2和onemore-hadoop-slave3从节点的配置。

下载Hadoop

还是从北京理工大学的镜像上下载Hadoop(如果下载速度慢,可以在主节点上发送到从节点):

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

创建文件夹

mkdir /usr/local/hadoop

解压

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

配置环境变量

追加Hadoop的环境变量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin
EOF

使环境变量生效

source /etc/profile

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

修改配置文件

删除slaves文件

rm -rfv /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

在主节点上把5个配置文件发送到从节点上

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

启动Hadoop集群

格式化namenode

第一次启动服务前需要执行词操作,以后就不需要执行了。

hadoop namenode -format

启动hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

访问http://onemore-hadoop-master:50070/,就可以查看Hadoop集群的相关信息了,如图:

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

常用命令

查看Hadoop集群的状态

hadoop dfsadmin -report

重启Hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

启动dfs服务

/usr/local/hadoop/hadoop-2.10.0/sbin/start-dfs.sh

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

常见错误

Error: JAVA_HOME is not set and could not be found.

这个错误大概意思是没有找到JDK的环境变量,可以修改hadoop-env.sh。

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh

增加JDK的环境变量,比如:

export JAVA_HOME=/usr/local/java/jdk1.8.0_231

因为是在主节点上修改的,还需要发送到各个从节点:

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave2:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave3:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

欢迎关注微信公众号:万猫学社,每周一分享Java技术干货。

Hadoop完全分布式集群搭建的更多相关文章

  1. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  2. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  3. 基于Hadoop伪分布式集群搭建Spark

    一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...

  4. Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建

    hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...

  5. hadoop 完全分布式集群搭建

    1.在伪分布式基础上搭建,伪分布式搭建参见VM上Hadoop3.1伪分布式模式搭建 2.虚拟机准备,本次集群采用2.8.3版本与3.X版本差别不大,端口号所有差别 192.168.44.10 vmho ...

  6. linux运维、架构之路-Hadoop完全分布式集群搭建

    一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...

  7. Hadoop伪分布式集群搭建

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...

  8. hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  9. centos7+hadoop完全分布式集群搭建

    Hadoop集群部署,就是以Cluster mode方式进行部署.本文是基于JDK1.7.0_79,hadoop2.7.5.  1.Hadoop的节点构成如下: HDFS daemon:  NameN ...

随机推荐

  1. HTTP的请求方式

    GET 请求获取 Request-URI 所标识的资源POST 在 Request-URI 所标识的资源后附加新的数据HEAD  请求获取由 Request-URI 所标识的资源的响应消息报头PUT ...

  2. 6.2.2 辅助类GenericOptionsParser,Tool和ToolRunner深入解析

    辅助类GenericOptionsParser,Tool和ToolRunner (1)为什么要用ToolRunner 将MapReduce Job配置参数写到java代码里,一旦变更意味着修改java ...

  3. [剑指offer] 二叉搜索树的后序遍历序列 (由1个后续遍历的数组判断它是不是BST)

    ①题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. ②思路 1.后续遍历的数组里,最后一个元素是根. 2 ...

  4. 公众号第三方平台开发 component_verify_ticket和accessToken的获取

    公众号第三方平台审核通过之后,微信的服务器会定时(10分钟一次)给"授权事件接收URL"发送component_verify_ticket,这里我们需要及时更新component_ ...

  5. Python3.7.1学习(五) 将列表中的元素转化为数字并排序

    # 本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: # 有一个数字字符的列表: numbers = ['2', '4', '1', '3']print(numbe ...

  6. Python自动化办公之操作Excel文件

    模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook("test.xlsx") 输出 ...

  7. SpringBoot系列教程Web篇之开启GZIP数据压缩

    本篇可以归纳在性能调优篇,虽然内容非常简单,但效果可能出乎预料的好: 分享一个真实案例,我们的服务部署在海外,国内访问时访问服务时,响应有点夸张:某些返回数据比较大的接口,耗时在 600ms+上,然而 ...

  8. spring boot集成shiro-redis时,分布式根据seesionId获取session报错排查总结

    昨天在集成shiro-redis的时候,使用sessionId在其他微服务获取用户的session时,发生错误:There is no session with id [xxx]. 查遍了所有资料,基 ...

  9. php设置随机ip访问

    当我们请求一个站点的时候,http报文头会携带一些ip信息,我们通过伪造这些信息,就可以形成不同ip访问请求的效果. header的头部CLIENT-IP和X-FORWARDED-FOR我们都设置为想 ...

  10. 读取FANUC进给倍率

    读取FANUC机床的倍率信息需要用到 FOCAS链接库. 根据FANUC的连接手册可以知道,进给倍率信号存在 Gn012寄存器中.在机床上更改倍率开关,发现G0012寄存器值变化,经验证G0012就是 ...