关于Hadoop与hadoop集群搭建应该注意的细节

1.Hadoop

 

说到大数据我们首先应该想到的就是hadoop,hadoop是由java语言编写的开源框架,它是一个处理大规模数据的平台,作用简单来说就是在大规模计算机服务器集群上对大量数据进行分布式的处理。对于一个大数据开发人员来说,hadoop是一直贯穿整个发开流程的。

 

Hadoop核心组件:

HDFS:分布式文件系统,解决大规模数据存储问题。可以简单地理解为大数据领域的“硬盘”。

YARN:负责任务调度,(hadoop2.0之后才出现)

MapReduce:分布式计算编程框架,解决海量数据计算。MapReduce简单来讲又分为map部分和reduce部分。

 

现在的hadoop准确来说已经不仅仅是一个框架结构了。随着技术的发展它已经变成一个生态圈,一个具有对hadoop技术的补充和更高层次抽象的体现。比如:

HDFS:分布式文件系统

HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作

HBASE:基于 HADOOP 的分布式海量数据库

ZOOKEEPER:分布式协调服务基础组件

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

Oozie:工作流调度框架

Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)

Flume:日志数据采集框架

Impala:基于 Hadoop 的实时分析

 

 

2.Hadoop集群搭建:

 

目前hadoop的版本有三大系列版本,1.0  2.0  3.0(是最近发行的版本,但是不稳定,存在很多问题) 。所以目前企业常用的大的版本是2.0  。

 

Hadoop集群实质上包含HDFS 集群和 YARN 集群。所以我们搭建的时候要规划好,(有时候这两个集群的角色可能部署到同一台服务器上,但是逻辑上是分离的,各自完成各自的功能。)

这里有一个疑问就是那么MapReduce呢?它是不是一个集群呢?需要配置吗?它在这个环境下是什么角色呢?

首先要确认HDFS是用来存储数据的,简单理解,你的电脑无论工作与否都需要有硬盘来存储数据,YARN是用来进行资源调度的,没有的话,就是一个存储也不能完成大数据计算功能。应该说这两个是必备的环境条件。MapReduce是分布式计算框架,主要用于完成计算功能,编写程序之后打包再放HDFS上运行,是代码层面的,所以我们需要配置的就是HDFS与YARN

 

3.HDFS集群中的角色主要有:

NameNode:也被成为名字节点,是HDFS的主从架构的主角色的扮演者。它维护者整个文件系统的目录树,以及目录树里的所有文件和目录,这些信息以两种文件存储在本地文件中:一种时命名空间镜像(也称文件系统镜像,File System Image, FSImage),即HDFS元数据的完整快照,每次NameNode启动时,默认会加载最新的命名空间镜像,另一种是命名空间镜像的编辑日志(edit log)

DataNode:(跟随者)是实际上完成存储的角色;是可扩展的,集群时,在每一台服务器都可以部署。

SecondaryNameNode:也被称为第二名字节点,用于定期合并命名空间镜像和命名空间镜像的编辑日志

NameNode与SecondaryNameNode:FSImage 文件其实是文件系统元数据的一个永久行检查点,因为FSImage是一个大型文件,如果频繁的执行写操作,会使系统运行很慢。解决方案是NameNode只将改动内容预写日志(WAL),即写入命名空间镜像的编辑日志。随着时间的推移,编辑日志会越来越大,那么一旦发生故障,将会花费很多的时间回滚操作,所以需要定期合并FSImage和编辑日志,如果由NameNode来做,那么NameNode在为集群服务时可能无法提供足够的资源,所以这件事情就交给了SecondaryNameNode

 

4.YARN集群中的角色主要有:

ResourceManager:是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。还是一个中心的服务,它做的事情是调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况。

 

NodeManager:是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器(ResourceManager )汇报

 

5.修改hadoop配置文件

在完成前提准备工作之后(比如网络环境准备,系统同步时间,以及jdk的安装以后),最重要的分布就是hadoop配置文件的修改了。

 

hadoop-env.sh配置文件:

这个文件设置的是hadoop运行的所需要的环境变量,这个配置文件中我们需要配置JAVA_HOME。

 

core-site.xml:

核心的配置文件,如果在 core-

site.xml 里没有配置的属性,则会自动会获取 core-default.xml 里的相同属性的值。一般情况下我们在这个配置文件中设置hadoop文件系统与临时目录。

 

hdfs-site.xml:如果在 hdfs-site.xml 里没有配置的属性,则会自动会获取 hdfs-default.xml 里的相同属性的值。一般情况下我们在这个配置文件指定HDFS 副本的数量与所在主机的 ip 和端口。

 

mapred-site.xml:同理,如果在 mapred-site.xml 里没有配置的属性,则会自动会获取 mapred-default.xml 里的相同属性的值,一般情况下我们在这个配置文件指定 mr 运行时框架。

 

yarn-site.xml:如果在 yarn-site.xml 里没有配置的属性,则会自动会获取 yarn-default.xml 里的相同属性的值。一般情况下我们在这个配置文件指定 指定 YARN 的(ResourceManager)的地址。

 

Slaves:主要作用用来完成脚本启动。

修改完匹配文件之后,要记得对namenode进行格式化。

 

6.hadoop的启动方式:单点启动和脚本启动(推荐脚本启动)

脚本启动:hdfs:$HADOOP_PREFIX/sbin/start-dfs.sh    

yarn: $HADOOP_PREFIX/sbin/start-yarn.sh

需要同时启动 Hadoop 两个集群的相关进程。

猜你喜欢

转载自blog.csdn.net/jinyusheng_1991/article/details/81638336