前言node
关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的处处宣扬,但其实不少公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方案,更有不少数据相关的项目好比弄几张报表,写几个T-SQL语句就被冠以“大数据项目”,固然了,时下热门的话题嘛,先把“大数据”帽子扣上,这样才能显示出项目的高大上,获得公司的重视或者高层领导的关注。sql
首先,关于大数据的概念或者架构一直在各方争议的背景下持续的存在着。目前,关于大数据项目能够真正被落地实施的解决方案就是:Hadoop为核心的的一些列开源分布式解决方案。数据库
其次,本系列,咱们不讲一些抽象的方法论或者概念性的东西,我将实际的跟你们分享一个真正的大数据解决方案将如何被落地实施。包括与其相关的的配套开源系统:Hive、Spark、Sqoop、Hue、Zookeeper、Kafka等诸多产品的搭建。centos
再次、关于大数据的生态圈每个产品都有着强大的技术背景作支撑。因此,本系列咱们重点放在如何搭建和使用等诸多技术实施点上,不扯太虚的东西。安全
技术准备服务器
进入本篇的正题,本篇咱们主要来分析如何来搭建一个Hadoop集群环境,其实Hadoop的搭建分为三种形式:单机模式、伪分布模式、彻底分布模式,关于这三种模式其实都是扯淡,只要掌握了彻底分布模式,也就是集群模式的搭建,剩下的两种模式天然而然就会用了,通常前两种模式通常用在开发或测试环境下,Hadoop最大的优点就是分布式集群计算,因此在生产环境下都是搭建的最后一种模式:彻底分布模式。网络
因此,本篇咱们来说解Hadoop集群环境的搭建。架构
通常,当公司要开始搭建Hadoop集群的时候,须要考虑一下技术点:框架
1、硬件的选择运维
首先,关于Hadoop集群环境硬件的选择,无非就是围绕几个面去选择:
一、须要搭建集群包含几个节点(Node)?
关于这个问题,引入的要考虑的点就是须要搭建几个Server环境,由于在分布式环境中,一个服务器(Server)就是一个节点,因此在选择节点的问题上是须要参照参照当前集群所要应用的业务场景来决定了,固然,在分布式集群环境中节点越多所带来的就是整个集群性能的提高,一样也也就意味着带来了成本的增高。
可是,关于Hadoop集群有一个最低的节点量供你们参考。
首先,在一个Hadoop集群环境中,NameNode,SecondaryNameNode和DataNode是须要分配不一样的节点上的,因此至少有三个节点来固然这些角色。这也就意味至少须要有三台服务器。固然,在Hadoop运行做业完成的时候,还须要另一个角色History Server来记录历史程序的运行状况,建议是将这个角色用独立的一台服务器来运行。
因此,在一个最简单的Hadoop分布式集群中至少须要三台服务器来构建:
二、集群环境中各个服务里该如何选择配置?
其实这个问题就是配置选型的问题,关于配置无非就是内存、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的选择,由于Hadoop为分布式计算运算,因此其运行模型基本是密集型并行计算,因此推荐的CPU要尽可能选择多路多核的,条件容许的话每一个节点都要如此。
而后,在一个大型的分布式集群中,还须要注意的是,由于分布式的计算,须要各个节点间进行频繁的通讯和IO操做,这也就意味对网络带宽有要求,因此推荐使用千兆以上的网卡,条件容许能够万兆网卡,交换机亦如此。
三、集群环境中每一个节点存储大小如何配置?须要引入什么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个服务器来运行集群了。
2、软件的选择
关于Hadoop集群环境软件的选择,无非就是围绕这个几个软件产品去选择:OS操做系统,Hadoop版本,JDK版本,Hive版本、MySQL版本等。
一、操做系统该选择哪款?
Hadoop产品是由Java语言开发的,因此推荐的是Linux操做系统,理由很简单开源免费,就一个免费这个理由就足以PK掉微软的操做系统,由于咱们知道集群环境是须要不少台服务器的,因此若是用微软的服务器成本会高不少,固然,其实在大数据开源的产品中基本找不到微软的影子,因此从这一点来说,微软已经拉下了不少,甚至已经在落寞!
因此,在开源的Linux操做系统中又是百花齐放,各类版本,各位朋友能够自行网上查阅各个版本的区别和优越性,这里我就直接告诉你们我推荐的操做系统CentOS.
以下照抄自博友虾皮的简介:
CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本。每一个版本的 CentOS 都会得到七年的支持(经过安全更新方式)。新版本的 CentOS 每两年发行一次,而每一个版本的 CentOS 会按期(大概每六个月)更新一次,以便支持新的硬件。这样,创建一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。
CentOS特色
好了,我相信以上这些理由足以征服你了。
二、Hadoop版本选择的问题?
关于Hadoop历史版本变迁过程当中,出现了不少版本,有兴趣的童鞋能够自行查阅,这里我只从大的方向把Hadoop版本劈成2个,这里暂称Hadoop1.0和Hadoop2.0,截止我写本文章的时候,Hadoop2.0版本已经至关稳定,而且逐渐在企业应用中大面积推广而来,关于这两个版本我就不去过多的介绍,网友能够自行查阅,或者参考我以前的一篇关于两个版本的架构比较。
因此,本系列内容我应用的版本就是基于Hadoop2.0这个系列来进行讲解。
而关于Jdk版本的问题是和Hadoop的版本相匹配的,其它相关产品后续咱们会分析,固然也你们能够自行从Hadoop官网上去查询,这里不赘述。
操做系统
为了方便演示,我会使用虚拟机跟你们讲解,固然,有兴趣的童鞋也能够自行下载虚拟机跟随我一步步来搭建这个平台,这里我选择的虚拟机为:VMware。
你们网上下载安装就能够了,过程很简单,没啥须要讲解的,固然你的PC配置是须要好一点的,至少8G以上,要不基本玩转不了虚拟机。
安装完成就是上面的样子了,相关资料你们网上查阅吧,这里就不在赘述。
而后,咱们进行Liunx操做系统的安装,上面已经说过,咱们选择的是CentOS操做,因此须要到CentOS官网进行下载安装就行,记住了:不用怕,不花钱!
官方网站与文档
官方主页: http://www.centos.org/
官方Wiki: http://wiki.centos.org/
这里在选择CentOS版本的时候须要记住了,若是不是公司要求,尽可能不要选择最新的,而是要选择最稳定的,缘由很简单,谁也不要当新版本的小白鼠。
而后选择要下载的稳定版本,这里我推荐选择CentOS6.8 64位操做系统。
而后,点击找到下载包下载就行。
在安装各个节点以前,咱们须要提早准备好相关节点的配置信息,好比计算机名、IP地址、安装角色、超级管理员帐户信息,内存分配、存储等,因此我列举了一个表格供你们参考:
机器名称 | IP地址 | 角色 | OS | 最高管理员名称(Name) | 最高管理员密码(PWD) | 通常用户名称(Name) | 通常用户密码(PWD) |
Master.Hadoop | 192.168.1.50 | Master | CentOS6.8 | root | password01! | hadoop | password01! |
Salve01.Hadoop | 192.168.1.51 | Salve1 | CentOS6.8 | root | password01! | hadoop | password01! |
Salve02.Hadoop | 192.168.1.52 | Salve2 | CentOS6.8 | root | password01! | hadoop | password01! |
Salve03.Hadoop | 192.168.1.53 | Salve3 | CentOS6.8 | root | password01! | hadoop | password01! |
MySQLServer01 | 102.168.1.100 | MySQLServer | Ubuntu | root | password01! | hadoop | password01! |
MySQLServer02 | 102.168.1.101 | MySQLServer | Ubuntu | root | password01! | hadoop | password01! |
你们能够看到,我这里先提早规划处四台服务器用来搭建Hadoop集群,而后分别为其分配了机器名称、IP,IP须要设置为统一网段,而后为了搭建咱们的Hadoop集群,咱们须要为全部集群中的节点建立一个独立的用户,这里我起了一个名字,就叫作Hadoop,固然为了方便记忆我统一的将全部的密码设置为password01!.
固然,这里咱们提早配置好内存和存储,由于咱们知道咱们使用的虚拟机这些信息是能够根据使用的状况,进行动态调整的。
另外,我又搭建了两台Ubuntu的服务器来单独安装MySQLServer,搭建了一个主从模式,咱们知道Ubuntu是一个界面友好的操做系统,这里和Hadoop集群分离的目的是由于Mysql数据库是比较占内存资源的,因此咱们单独机器来安装,固然,MySQL并非Hadoop集群所须要的,二者没有必然的关系,这里搭建它的目的就为了后续安装Hive来分析数据应用的,而且咱们能够在这个机器里进行开发调试,固然Window平台也能够,毕竟咱们使用Windows平台是最熟练的。
结语
此篇篇幅已经有些长度了,先到此吧,关于Hadoop大数据集群的搭建后续依次介绍,好比利用Zookeeper搭建Hadoop高可用平台、Map-Reducer层序的开发、Hive产品的数据分析、Spark的应用程序的开发、Hue的集群坏境的集成和运维、Sqoop2的数据抽取等,有兴趣的童鞋能够提早关注。
本篇主要介绍了搭建一个Hadoop大数据集群须要提早准备的内容和一些注意项,关于开源的大数据产品生态链是很是的庞大,因此咱们将花费不少的时间在应用的使用场景上,可是其最底层的支撑框架就是Hadoop的Yarn计算模型和HDFS分布式文件存储系统。
经过该篇的介绍,多少也须要知道本身须要掌握的技术点:好比Linux操做系统的运维和操做、MySQL关系型数据应用和管理、Java开发的基础知识等诸多门槛。
有问题能够留言或者私信,随时恭候有兴趣的童鞋加大数据平台深刻研究。共同窗习,一块儿进步。
若是您看了本篇博客,以为对您有所收获,请不要吝啬您的“推荐”。