一、Hadoop是什么?
从狭义来说,Hadoop指的是Apache下的一款开源框架,目前常用的是Hadoop2版本。
Hadoop2主要包含以下3个组件:
与Hadoop1区别在于1版本把资源管理和海量数据计算的任务都丢给MapReduce,即Hadoop1只有一个HDFS和MapReduce组成。
- HDFS:一个Hadoop的分布式文件系统,支持NameNode横向扩展,解决海量数据的存储。
- YARN:一个负责作业调度和集群资源管理的框架,解决资源任务调度。
- MapReduce:一个分布式运算编程框架,运行在YARN上,用来解决海量数据的计算。
从广义来说,Hadoop类似于Spring,已经形成了一个Hadoop生态圈,许多技术都和Hadoop进行集成使用起来。
总结:Hadoop的应用场景并不会跟某些行业或某些业务挂钩在一起,它只是一款海量数据分析处理的软件平台,提供HDFS、MapReduce、YARN这些模块来对外提供帮助。
二、Hadoop2集群理论
搭建使用目前稳定版本:Hadoop2.7.4
Hadoop集群一般指的是HDFS集群和YARN集群,两者在逻辑上分离,物理上在一起,如下图:

前两种主要用于调试,属于单机部署,后面一种才是生产环境部署。
- Standalone mode(独立模式):仅在一个机器运行一个java进程。
- Pseudo-Distributed(伪分布式模式):仅在一个机器上HDFS的NameNode和DataNode、YARN的ResourceManager和NodeManager,但分别启动单独的java进程。
- Cluster mode(群集模式):会使用N台主机组成一个Hadoop集群,这种部署方式下,主节点和从节点会公开部署在不同的机器上。
三、实际操作搭建hadoop集群
- 1、在VMware14虚拟机中安装centos7操作系统,并命名为master,我全程按这个教程装的,很详细。
附带安装教程:https://blog.csdn.net/babyxue/article/details/80970526。 - 2、安装好虚拟机系统之后,通过xshell这个软件来在windows系统上远程连接到虚拟机的linux系统进行操作更加方便,并且通过xftp这个软件来把jdk和hadoop上传到linux系统中,很实用这2款软件,服务器必备利器,学生可以通过邮箱注册进行免费下载。/11783601-711ad6c18f744313.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 3、
注意:以下操作都是基于root用户来进行的,否则你可能会因为权限不够而无法修改配置文件。
配置ip地址,敲命令vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改指定文件配置,复制下面的内容进去替换掉原来的内容,#后面是注释可以删掉
TYPE="Ethernet" # 网络类型为以太网
BOOTPROTO="static" # 手动分配ip
NAME="ens33" # 网卡设备名,设备名一定要跟文件名一致
DEVICE="ens33" # 网卡设备名,设备名一定要跟文件名一致
ONBOOT="yes" # 该网卡是否随网络服务启动
IPADDR="10.14.28.100" # 该网卡ip地址就是你要配置的固定IP,如果你要用xshell等工具连接,220这个网段最好和你自己的电脑网段一致,否则有可能用xshell连接失败
GATEWAY="10.14.28.2" # 网关
NETMASK="255.255.255.0" # 子网掩码
DNS1="8.8.8.8" # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址
接着配置网络工作,敲命令vi /etc/sysconfig/network
进行配置
NETWORKING=yes # 网络是否工作,此处一定不能为no
配置公共DNS服务(可选),在/etc/resolv.conf
文件里增加如下配置
nameserver 8.8.8.8
最后关闭防火墙和重启网络服务
systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 禁止开机启动
service network restart #重启网络服务
克隆步骤1新建的虚拟机master,克隆3个新的虚拟机,并分别命名为slave1、slave2、slave3,克隆操作:把当前新建好的虚拟机关闭掉,因为在开启状态是不能克隆的,然后右键虚拟机-->选择管理-->克隆-->完成克隆副本-->选择保存的位置。
我们要完成的集群是这样的架构。

和上面一样的配置,只是修改了主机ip而已,不固定,在同一个网段就好,然后重启网络服务,命令和上面一样就省略掉了。
然后,修改主机名,敲命令
hostnamectl set-hostname slave1(你要的主机名字)
,之后敲命令
vi /etc/hosts
修改hosts文件,将名字和IP建立联系,然后重启reboot命令。最后这是关键,4台虚拟机都同样的操作都修改好后,互相ping一下看看通不通,比如在windows使用cmd命令行ping4台虚拟机试试,4台虚拟机互相ping下或者ping下windows。最后4台虚拟机就如下图配置好了。

-
4、之后使用xshell这个软件远程连接4台虚拟机,步骤如下:
图片.png 最后模式如下图:
图片.png
- 5、上图的master相当于namenode,存储着文件名,记录文件存放的位置,其他3台slave相当于datanode,存储着真实的数据。外部访问都是通过namenode来间接访问datanode,namenode相当于管理者,datanode相当于数据提供者。
- 6、cd进入到
/usr/local/hadoop/etc/hadoop
目录下,显示所有文件会看到有个core-site.xml
文件,这个文件是告诉master在哪里,slave被谁管理。修改此文件,在里面的configuration标签里写下述内容,4台虚拟机都要写:
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
- 7、经过上面的文件配置,就可以启动hadoop了,namenode与datanode默认是装在一起的,所以得分开输入命令分别启动。
先格式化下namenode,敲命令hdfs namenode -format
,然后4台虚拟机都配置下主机名与主机ip的关联,敲命令vi /etc/hosts
编辑一个文件来配置主机。输入以下内容
10.14.28.100 master
10.14.28.101 slave1
10.14.28.102 slave2
10.14.28.103 slave3
然后就可以敲命令hadoop-daemon.sh start namenode
启动namenode,再输入jps
命令查看java进程,可看看namenode进程是否启动。如下图:

网友评论