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

开发笔记:一脸懵逼学习基于CentOs的Hadoop集群安装与配置

篇首语:本文由编程笔记#小编为大家整理,主要介绍了一脸懵逼学习基于CentOs的Hadoop集群安装与配置相关的知识,希望对你有一定的参考价值。1:Hado

篇首语:本文由编程笔记#小编为大家整理,主要介绍了一脸懵逼学习基于CentOs的Hadoop集群安装与配置相关的知识,希望对你有一定的参考价值。


1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。


 注意:HADOOP的核心组件有:

  1)HDFS(分布式文件系统)

  2)YARN(运算资源调度系统)

  3)MAPREDUCE(分布式运算编程框架)


       Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode )和N个数据结点 ( DataNode )组成,每个结点均是一台普通的计算机。在使用上同我们熟悉的单机上的文件系统非常类似,一样可以建目录,创建,复制,删除文件,查看文件内容等。但其底层实现上是把文件切割成 Block,然后这些 Block 分散地存储于不同的 DataNode 上,每个 Block 还可以复制数份存储于不同的 DataNode 上,达到容错容灾之目的。NameNode 则是整个 HDFS 的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个 Block,这些 Block 可以从哪些 DataNode 中获得,各个 DataNode 的状态等重要信息。

      MapReduce 是 Google 公司的核心计算模型,它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map 和 Reduce, 这是一个令人惊讶的简单却又威力巨大的模型。适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。基于它写出来的程序能够运行在由上千台商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别的数据集,实现了Haddoop在集群上的数据和任务的并行计算与处理。

    个人认为,HDFS(分布式文件系统)观点分析,集群中的服务器各尽其责,通力合作,共同提供了整个文件系统的服务。从职责上集群服务器以各自任务分为namenode、datanode服务器.其中namenode为主控服务器,datanode为数据服务器。Namenode管理所有的datanode数据存储、备份、组织记录分配逻辑上的处理。说明白点namenode就是运筹帷幄、负责布局指挥将军,具体的存储、备份是由datanode这样的战士执行完成的。故此很多资料将HDFS分布式文件系统的组织结构分为master(主人)和slaver(奴隶)的关系。其实和namenode、datanode划分道理是一样的。

MapReduce计算模型观点分析,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说计算节点和存储节点在一起。这种配置允许在那些已经存好数据的节点上高效的调度任务,这样可以使整个集群的网络宽带得到非常高效的利用。另外,在Hadoop中,用于执行MapReduce任务的机器有两个角色:JobTracker,TaskTracker。JobTracker(一个集群中只能有一台)是用于管理和调度工作的,TaskTracker是用于执行工作的。

在技术方面Hadoop体系具体包含了以下技术:


Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common。

 

1:HADOOP(hdfs、MAPREDUCE、yarn) :元老级大数据处理技术框架,擅长离线数据分析;

2:Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

3:MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API。  分布式运算程序开发框架;

4:HDFS:Hadoop分布式文件系统(Hadoop Distributed File System)。分布式文件系统;

5:Pig:大数据分析平台,为用户提供多种接口。

6:Hive:数据仓库工具,由Facebook贡献。基于大数据技术(文件系统+运算框架)的SQL数据仓库工具;数据仓库工具,使用方便,功能丰富,基于MR延迟大;

7:Hbase:类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级Apache项目)。基于HADOOP的分布式海量数据库;分布式海量数据库,离线分析和在线业务通吃;

8:ZooKeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。分布式协调服务基础组件;分布式协调服务基础组件;

9:Sqoop:Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 :mysql, Oracle, Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。数据导入导出工具;

10:Oozie:负责MapReduce作业调度。工作流调度框架;

11:Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库。

12:Flume:日志数据采集框架;数据采集框架;

 






以上对Hadoop体系框架和相应技术做了相应分析,并从HDFS、MapReduce的角度分析了集群中的角色扮演,这既是我们实验的理论基础,也是实验研究Hadoop深层次系统知识体系结构的意义所在。


Hadoop集群简介:

  1)HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起

  2)HDFS集群:

    负责海量数据的存储,即负责数据文件的读写操作,集群中的角色主要有 NameNode (Hdfs的大哥)/ DataNode(Hdfs的小弟)

  3)YARN集群:

    负责海量数据运算时的资源调度,即负责为mapreduce程序分配运算硬件资源,集群中的角色主要有 ResourceManager (Yarn的小哥)/NodeManager(Yarn的小弟)

  4)注意:节点分配思想,hdfs是数据的存储,所以DataNode存储数据,而yarn是资源调度,所在的机器正好存在数据,就可以进行调度,否则通过网络传输,在yarn上ResourceManager对NodeManager进行管理,管理资源调度 。

  5)如果,集群搭建案例,以5节点为例进行搭建,角色分配如下:

    机器-01    NameNode  SecondaryNameNode

    机器-02    ResourceManager

    机器-03   DataNode    NodeManager

      机器-04   DataNode    NodeManager

      机器-05   DataNode    NodeManager






2:首先自己搞三台虚拟机,这里使用centOs虚拟机(本实验只搭建一个有三台主机的小集群。三台机器的具体分工命名如下):

















































IP






主机名






功能角色






192.168.3.129






 CentOS-01/master(主人)






namenode(控制节点)、JobTracker(工作分配)






192.168.3.130






 CentOS-02/slaver1(奴隶)






datanode(数据节点)、TaskTracker(任务执行)






192.168.3.131






 CentOS-03/slaver2(奴隶)






datanode(数据节点)、TaskTracker(任务执行)






 3:讲解一下网络配置,不然好多小伙伴不知道网络怎么搞,以至于一直拖延不前:

首先,在VMware软件里面的编辑----》虚拟网络编辑器---》选择VMnet8模式

 

然后选择NET设置,将网关ip修改为这个模式192.168.x.1格式:

然后选择DHCP设置,自己可以选择的ip地址范围:

然后找到本地的网络设置,设置一下本地网络:

然后开始设置虚拟机的静态ip地址,如下所示,三个虚拟机按照如下进行设置,下面只写一个虚拟机,其他两个类比即可:

 鼠标右击找到Edit Connections:

然后进行编辑:

注意下面红色圈起来的地方(Address分别设置成自己容易识别的,我的是192.168.3.129,192.168.3.130,192.168.3.131):

最后网络就可以使用了,使用XShell进行远程连接方便操作:

需要注意的是这里的网络设置必须是Net8模式的:

 4:Hadoop完全分布式的安装需要以下几个过程:


1 综述:Hadoop完全分布式的安装需要以下几个过程:
21)为防止权限不够,三台机器均开启root登录。
32)为三台机器分配IP地址及相应的角色。
43)对三台机器进行jdk安装并配置环境变量。
54)对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。
65)进行Hadoop集群完全分布式的安装配置。
7 下面对以上过程进行详细叙述。

5:切换root用户进行操作(三台机器都执行此操作即可):


1)如果正式工作了,建议使用自己的用户,而非root用户(详细创建用户命令可百度):

   useradd 用户名称;

   passwd 密码;

2)新建用户以后,会遇到一些很烦心的事情,这个时候修改:vim /etc/sudoers新用户的权限,如给hadoop用户添加执行的权限;





6:在三台主机上分别设置/etc/hosts及/etc/sysconfig/network(centos操作系统)       /etc/hostname(ubuntu操作系统)

hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)

如下所示:

执行此命令:[root@localhost hadoop]# vim /etc/sysconfig/network

主节点修改为master:

 节点一修改为slaver1

  节点二修改为slaver2

然后修改主机名称和ip的对应关系:

三台主机配置相同:

如下命令:[root@localhost hadoop]# vim /etc/hosts

配置好以后进行重启三台电脑即可(重启命令reboot):

自己可以进行验证一下是否修改正确,如ping master/ping slaver1/ping slaver2:

7:三台机器上安装jdk(将linux版本的jdk上传到虚拟机,上传操作之前说过,此处省略,注意jdk的是linux版本的):

上传之后进行解压缩和配置环境变量:

 

配置一下jdk的环境变量(必须用root权限进行修改配置文件):

[root@master hadoop]# vim /etc/profile

然后验证三台机器的jdk是否安装成功:

验证之前先刷新一下配置文件:[root@slaver1 hadoop]# source /etc/profile
然后使用java/javac/java -version三个命令分别在三台机器上面进行验证:
8:安装SSH,配置免秘钥登录操作,由于我的已经安装好了,所以这一步略过,自己可以去百度,直接配置免秘钥登录:

生成密钥并配置SSH免密码登录本机执行以下命令,生成密钥对,并把公钥文件写入授权文件中:

 生成密钥对,并把公钥文件写入授权文件中,cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys会自动创建authorized_keys文件,然后将id_dsa.pub的内容写到authorized_keys文件里面,这个时候去查看authorized_keys已经存在id_dsa.pub里面的内容(生成密钥对及授权文件,公钥在/root/.ssh/下)

然后将授权文件复制到slaver1主机中,输入命令:

[hadoop@master .ssh]$ scp authorized_keys root@192.168.3.130:~/.ssh/

可以看到slaver1已经存在授权文件:

然后在slave1机器中,使用同样命令生成密钥对,将公钥写入授权文件中。然后将slaver1主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。

为了防止防火墙禁止一些端口号,三台机器应使用

关闭防火墙命令:ufw disable

重启三台机器,防火墙关闭命令才能生效,重启后后查看是否可以从master主机免密码登录slaver,输入命令:ssh slaver1,ssh slaver2:

在slaver1进行生成密钥对,将公钥写入授权文件中

 

 将公钥写入授权文件中

 

然后将slaver1主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。

 

 使用同样命令在slaver2生成密钥对,将公钥写入授权文件中。

 

将公钥写入授权文件中:

 

这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。

 

然后查看master的授权文件:

然后将此时的授权文件分别复制到slaver1主机中,这样就完成了:

然后查看slaver1的授权文件:

为了防止防火墙禁止一些端口号,三台机器应使用

关闭防火墙命令:ufw disable(重启三台机器,防火墙关闭命令才能生效)/ service iptables stop(暂时关闭防火墙,方便测试使用)

重启后后查看是否可以从master主机免密码登录slaver,输入命令:

ssh slaver1

ssh slaver2

第一次登陆不知道为啥还是让输入一个yes,之后再进行登陆就直接登陆成功了:

 

 9:进行Hadoop集群完全分布式的安装配置(将下载的hadoop-2.2.0上传到虚拟机并解压至/home/hadoop目录下):

 [root@master hadoop]# tar -zxvf hadoop-2.4.1.tar.gz

三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。

需要配置的文件涉及到的有7个(mapred-site.xml文件默认不存在的,可以复制相应的template文件获得(如mapred-site.xml文件)。

如下图标示部分:

 

配置文件1:vim hadoop-env.sh

修改JAVA_HOME值如下图:

配置文件2:yarn-env.sh

修改JAVA_HOME值如下图:

 

配置文件3:slaves(保存所有slave节点)写入以下内容,是给自动化启动脚本使用的哦,切记,是启动DataNode

(这里需要注意一下,开始我的master节点写的 vim slaves出现了,出现了hadoop DataNode启动不了的问题,这里不是多次格式化造成的问题,这里是master主节点的vim slaves内容是master,而slaver1和slaver2的vim slaves内容是slaver1,slaver2,即下图内容,所以造成了DataNode启动不了的问题。)

 

配置文件4:core-site.xml

添加配置内容如下图:





fs.defaultFS
hdfs://master:9000



hadoop.tmp.dir
/home/hadoop/hadoop-2.4.1/tmp


配置文件5:hdfs-site.xml





dfs.replication
2

            
    
        dfs.secondary.http.address
        master:50090
    
   

 

配置文件6:mapred-site.xml

[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml





mapreduce.framework.name
yarn



配置文件7:yarn-site.xml






yarn.resourcemanager.hostname
master



yarn.nodemanager.aux-services
mapreduce_shuffle


上面配置完毕后,基本上完成了90%的工作,剩下的就是复制。我们可以把整个hadoop复制过去使用命令如下:

[root@master hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver1:/home/hadoop/

[root@master hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver2:/home/hadoop/
然后去slaver1和slaver2就可以看到复制过去的hadoop-2.4.1

为方便用户和系统管理使用hadoop、hdfs相关命令置系统环境变量,使用命令:vim /etc/profile

配置内容为hadoop目录下的binsbin路径,具体如下:

[root@slaver1 hadoop]# vim /etc/profile


export JAVA_HOME=/home/hadoop/jdk1.7.0_65
export HADOOP_HOME
=/home/hadoop/hadoop-2.4.1
export PATH
=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完后执行生效命令:source /etc/profile

 下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。

 10:启动验证

在master节点上进行格式化namenode  (是对namenode进行初始化):

命令:hadoop  namenode  -format或者hdfs namenode -format

start-all.sh或者启动(start-dfs.sh和start-yarn.sh)

使用Jps命令master有如下进程,说明ok


start-yarn.sh 启动namenode和datanode.

hadoop-daemon.sh start namenode 启动namenode.
hadoop-daemon.sh start datanode 启动datanode.  



 [root@master hadoop]# start-all.sh

 上面这个图是错误的,由于master的vim slaves没有配置正确,造成的。下图是修改过后显示的。

使用jps命令slaver1slaver2有如下进程,说明ok:

查看集群状态,命令:hadoop dfsadmin -report

查看分布式文件系统:http://master:50070

除了浏览器查看集群的状态,可以使用命令查看,此命令比浏览器查看更加准确:

[root@master hadoop]# hdfs dfsadmin -report

 查看MapReduce:http://master:8088

使用以上命令,当你看到如下图所示的效果图时,恭喜你完成了Hadoop完全分布式的安装设置,其实这些部署还是比较基本的,对于Hadoop高深的体系结构和强大技术应用,这仅仅是一个小小的开始。

11:集群的关闭在master节点上执行命令如下:

stop-all.sh或者(stop-dfs.sh和stop-yarn.sh)

12:hadoop基本操作实践


基本命令
1. 格式化工作空间
进入bin目录,运行 hadoop namenode –format
2. 启动hdfs
进入hadoop目录,在bin
/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护
HDFS文件操作
Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。并且支持通配符,如
*
1. 查看文件列表
b. 执行hadoop fs
-ls /
查看hdfs中
/目录下的所有文件(包括子目录下的文件)。
a. 执行hadoop fs
-ls -R /
2. 创建文件目录
a. 执行hadoop fs
-mkdir /newDir
3. 删除文件
删除hdfs中
/目录下一个名叫needDelete的文件
a. 执行hadoop fs
-rm /needDelete
删除hdfs中
/hdfs目录以及该目录下的所有文件
a. 执行hadoop fs
-rm -r /hdfs
4. 上传文件
上传一个本机
/home/admin/newFile的文件到hdfs中/目录下
执行hadoop fs –put
/home/admin/newFile /
5. 下载文件
下载hdfs中
/ 目录下的newFile文件到本机/home/admin/newFile中
a. 执行hadoop fs –
get /newFile /home/admin/newFile
6. 查看文件内容
查看hdfs中
/目录下的newFile文件
a. 执行hadoop fs –cat
/newFile

2017-11-22  14:06:19

停更......



推荐阅读
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
author-avatar
wgol992015
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有