大数据系列(1)——Hadoop集群坏境搭建配置

发表于:2018-7-20 15:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:指尖流淌    来源:博客园

  前言
  关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方案,更有很多数据相关的项目比如弄几张报表,写几个T-SQL语句就被冠以“大数据项目”,当然了,时下热门的话题嘛,先把“大数据”帽子扣上,这样才能显示出项目的高大上,得到公司的重视或者高层领导的关注。
  首先,关于大数据的概念或者架构一直在各方争议的背景下持续的存在着。目前,关于大数据项目可以真正被落地实施的解决方案就是:Hadoop为核心的的一些列开源分布式解决方案。
  其次,本系列,我们不讲一些抽象的方法论或者概念性的东西,我将实际的跟大家分享一个真正的大数据解决方案将如何被落地实施。包括与其相关的的配套开源系统:Hive、Spark、Sqoop、Hue、Zookeeper、Kafka等诸多产品的搭建。
  再次、关于大数据的生态圈每一个产品都有着强大的技术背景做支撑。所以,本系列我们重点放在如何搭建和使用等诸多技术实施点上,不扯太虚的东西。
  技术准备
  进入本篇的正题,本篇我们主要来分析如何来搭建一个Hadoop集群环境,其实Hadoop的搭建分为三种形式:单机模式、伪分布模式、完全分布模式,关于这三种模式其实都是扯淡,只要掌握了完全分布模式,也就是集群模式的搭建,剩下的两种模式自然而然就会用了,一般前两种模式一般用在开发或测试环境下,Hadoop最大的优势就是分布式集群计算,所以在生产环境下都是搭建的最后一种模式:完全分布模式。
  所以,本篇我们来讲解Hadoop集群环境的搭建。
  一般,当公司要开始搭建Hadoop集群的时候,需要考虑一下技术点:
  一、硬件的选择
  首先,关于Hadoop集群环境硬件的选择,无非就是围绕几个面去选择:
  1、需要搭建集群包含几个节点(Node)
  关于这个问题,引入的要考虑的点就是需要搭建几个Server环境,因为在分布式环境中,一个服务器(Server)就是一个节点,所以在选择节点的问题上是需要参照参照当前集群所要应用的业务场景来决定了,当然,在分布式集群环境中节点越多所带来的就是整个集群性能的提升,同样也也就意味着带来了成本的增高。
  但是,关于Hadoop集群有一个最低的节点量供大家参考。
  首先,在一个Hadoop集群环境中,NameNode,SecondaryNameNode和DataNode是需要分配不同的节点上的,所以至少有三个节点来当然这些角色。这也就意味至少需要有三台服务器。当然,在Hadoop运行作业完成的时候,还需要另外一个角色History Server来记录历史程序的运行情况,建议是将这个角色用独立的一台服务器来运行。
  所以,在一个最简单的Hadoop分布式集群中至少需要三台服务器来构建:
  第一台用来记录所有的数据分布情况,运行的进程就是NameNode
  第二台用来备份所有数据分布情况,毕竟当前面的那台服务器宕机的时候,还可以通过该服务器来恢复数据。所以,该服务器运行的程序就是SecondaryNameNode
  第三台用来存储实际的数据,运行的进程就是DataNode
  第四台是可选的服务器用来记录应用程序历史的运行状况。运行的程序就是History Server了。
  2、集群环境中各个服务里该如何选择配置
  其实这个问题就是配置选型的问题,关于配置无非就是内存、CPU、存储等如何选择,当然,在公司预算允许的情况下,配置越高越好,关于这些个问题在搭建Hadoop环境的时候,需要从以下几个点来考虑。
  首先,关于集群中的几个节点是根据角色的划分有侧重点进行配置的,并不是要求所有的服务器都弄一样的配置,在Hadoop集群环境中,最重要的就是NameNode运行的服务器了,因为它扮演的角色是整个集群的调度和协调工作,当然在这个角色中还有一个最重要的进程是资源管理(ResourceManager),它才是真正的协调整个集群中每个节点的运行。所以这个服务器的配置要高于其它节点。
  其次,在Hadoop集群运行的过程是需要将所有的数据分布记录拉入到内存中的,所以这就意味着当整个集群的数据越来越大,我们知道在大数据的环境下,几TB级别或者PB级别的数据是很常见的,这也就意味这个数据分布记录也要增大,所以需要加大内存,这里有一个参考依据:
  一般1GB内存可以管理百万个block文件。
  举例:bolck为128M,副本为3个,200台集群,4TB数据,需要的Namenode内存为:200(服务器数)x 4194304MB(4TB数据) / (128MB x 3)=2184533.33个文件=2.18百万个文件,所以内存值也就接近于2.2G了。
  再次,因为这里有有一台机器用来做备份,所以secondary namenode需要的内存与namenode需要的内存大概一样,然后就是从节点的各台服务器需要的内存量了,这里也有一个参考依据:
  首先计算当前CPU的虚拟核数(Vcore):虚拟核数(Vcore)=CPU个数*单CPU合数*HT(超线程数)
  然后根据虚拟核数配置内存容量:内存容量=虚拟核数(Vcore)*2GB(至少2GB)
  关于CPU的选择,因为Hadoop为分布式计算运算,所以其运行模型基本是密集型并行计算,所以推荐的CPU要尽量选择多路多核的,条件允许的话每个节点都要如此。
  然后,在一个大型的分布式集群中,还需要注意的是,因为分布式的计算,需要各个节点间进行频繁的通信和IO操作,这也就意味对网络带宽有要求,所以推荐使用千兆以上的网卡,条件允许可以万兆网卡,交换机亦如此。
  3、集群环境中每个节点存储大小如何配置?需要引入什么raid
  首先先来谈一下关于raid的问题,之前因为raid的目的就是为了防止数据丢失而做的存储层数据备份机制,现在最佳的使用场景是单台服务这种高风险的配置,然后再分布式集群中,所存储的数据是分布式存放到各个数据节点上的(DataNode),并且Hadoop应用已经默认实现了数据的备份,所以raid在分布式系统中是没有多大作用的,然并卵!其实,究其原理很简单,集群中单节点的数据备份在出现意外宕机的情况下基本是无法恢复出有效数据的。
  然后我们再来分析一下关于存储的问题,可以明确一点的就是:数据量的大小决定了集群整体的存储大小,同样也决定了整个集群的规模!
  来举个例子:
  假如我们当前可以确定的存量数据量有1TB,然后每天大约增长10GB的数据量,那么当前集群未来一年之内集群存储大小计算方式为:
  (1TB+10GB*365天)*3*1.3=17.8TB
  可以看出,这个集群的规模一年就得大约需要18T的存储空间,这里解释一下计算的公式,括号外面的乘以3指的是当前数据为了防止丢失自己所做的冗余备份,默认是一份数据拷贝三份存储于不同的服务器上,然后后面乘以1.3的目的是作为节点的操作系统或者计算的临时结果预留空间。
  然后,我们接着计算节点数:
  节点数(Nodes)=18TB/2TB=9
  上面的计算公式除以2TB的假设是每个节点有2TB的存储空间,这里根据集群的存储大小可以计算出整个集群的数据存储节点数:9个。
  所以需要的总结点数:总结点数=9(数据存储节点)+2(NameNode和SecondaryNameNode)=11个。
  到此,就需要搭建11个服务器来运行集群了。
  二、软件的选择
  关于Hadoop集群环境软件的选择,无非就是围绕这个几个软件产品去选择:OS操作系统,Hadoop版本,JDK版本,Hive版本、MySQL版本等。
  1、操作系统该选择哪款?
  Hadoop产品是由Java语言开发的,所以推荐的是Linux操作系统,理由很简单开源免费,就一个免费这个理由就足以PK掉微软的操作系统,因为我们知道集群环境是需要很多台服务器的,所以如果用微软的服务器成本会高很多,当然,其实在大数据开源的产品中基本找不到微软的影子,所以从这一点来讲,微软已经拉下了很多,甚至已经在落寞!
  所以,在开源的Linux操作系统中又是百花齐放,各种版本,各位朋友可以自行网上查阅各个版本的区别和优越性,这里我就直接告诉大家我推荐的操作系统CentOS.
  如下照抄自博友虾皮的简介:
  CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本。每个版本的 CentOS 都会获得七年的支持(通过安全更新方式)。新版本的 CentOS 每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。
  CentOS特点
  可以把CentOS理解为Red Hat AS系列!它完全就是对Red Hat AS进行改进后发布的!各种操作、使用和RED HAT没有区别!
  CentOS完全免费,不存在RED HAT AS4需要序列号的问题。
  CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!
  CentOS修正了许多RED HAT AS的BUG!
  CentOS版本说明: CentOS3.1 等同于 RED HAT AS3 Update1 CentOS3.4 等同于 RED HAT AS3 Update4 CentOS4.0 等同于 RED HAT AS4。
  好了,我相信以上这些理由足以征服你了。
  2、Hadoop版本选择的问题?
  关于Hadoop历史版本变迁过程中,出现了很多版本,有兴趣的童鞋可以自行查阅,这里我只从大的方向把Hadoop版本劈成2个,这里暂称Hadoop1.0和Hadoop2.0,截止我写本文章的时候,Hadoop2.0版本已经相当稳定,并且逐渐在企业应用中大面积推广而来,关于这两个版本我就不去过多的介绍,网友可以自行查阅,或者参考我之前的一篇关于两个版本的架构比较。
  所以,本系列内容我应用的版本就是基于Hadoop2.0这个系列来进行讲解。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号