下图简单看一下hadoop的发展史
思想: 通过引用数据校验块,使其和原始数据校验块编码产生关联关系,然后听过关联关系恢复,这个技术依赖于线性代数一些姿势
用处: 用于数据的恢复,可以提高磁盘的利用率
缺点: 时间换空间产物,因为编码解码会浪费时间
纠删码技术原理解释:
假设
x1=1;
x2=2;
x3=3
x1+2 x2+4 x3=17
x1+2 x2+3 x3=14
根据上面一组方程求x1,x2,x3的值,其实虽然有5个方程,其实最少只需要有三个方程就能求出来另外两个方程
把上面这个原理对应到数据里面就是
x1,x2,x3就相当于是原始数据,
x1+2 x2+4 x3=17
x1+2 x2+3 x3=14
这两个方程结果为校验值,
就是假如只有x1这个数据块,但是有下面连个方程,是不是就可以求出对应的x2,和x3了,
如果一个数据是被是3个原始的数据块:
备份机制中:采用2复本机制,至少需要6个数据块才能够保证数据的可靠性,即每个各备份一个即可,
如果是数据块的这种,最少需要4个,他可以容许你的一个数据块的丢失,比如把1丢了,剩下的2和3剩下,通过一个方程就能求出来1的内容,就可以允许一个数据块丢失
之前数据丢失了,直接从别的服务器位置拷贝一个过来就行,hadoop3用纠删码就需要号计算,还需要拿到另外块的数据和计算公式,因为他是要计算的,比如1,2,3三块数据块,比如采用纠删码存储技术,就可以把1号数据丢失,但是某天需要用到1号,数据,就需要从新计算恢复,所以这个就需要耗费时间
但是我觉得吧,比如hadoop以后可以在这个基础上优化一下
比如说三台服务器,一个文件被切割成了1,2,3三份,具体存储如下
上面三个为纠删码存储方式
下面三个为正常存储方式
hadoop正在往这个方向优化
即先从其他服务器找这个数据块,找不到再用纠删码计算
所以纠删码用于存储冷数据,冷数据指的是平时很少用到的数据
这个用法创建一个eraszing zone(空间),然后放在这个空间的数据,创建目录,把需要纠删码技术存储的把这个文件放到这个路径即可
比如之前的数据时热门的,但是之前并不是存储在这个eraszing zone里面,但是现在就是冷数据,食之无味,弃之可惜,鸡肋也,所以就可以在这个数据拷贝到这个eraszing zone里面,然后把那旧数据原位置删除就行,hadoop也在做一种简单的办法,通过一个命令,修改这个冷数据的存储方式,hadoop正在做,
所以30的冷数据还是建议使用这种备份机制,冷门数据是用纠删码(时间换空间)
namenode的HA升级了,支持两个以上的namemode,
例如,通过配置三个NameNode和五个JournalNode,群集能够容忍两个节点的故障,而不是一个故障。
但是Active的NameNode始终只有1个,余下的都是Standby。 Standby NN会不断与JN同步,保证自己获取最新的editlog,并将edits同步到自己维护的image中去,这样便可以实现热备,在发生failover的时候,立马切换成active状态,对外提供服务。同时,JN只允许一个active状态的NN写入
以前是支持亚马逊的,现在30支持了更多的,尤其是阿里云,说明阿里云正在走向壮大
增加DataNode的 内部 负载均衡,之前是DataNode之间的负载均衡,现在是DataNode内部的负载均衡,比如DataNode这台机器有三块磁盘,然后发现只有一块磁盘写满了,另外两块磁盘都没怎么用,这时候输入一个命令,他就可以帮你重新分配一下
现在可以通过hdfs diskbalancer命令,进行节点内部硬盘间的数据平衡。该功能默认是关闭的,需要手动设置参数dfsdiskbalancerenabled为true来开启。
yarn timeline service做了升级,yarn timeline service是yarn是资源管理和任务调度,这timeline service就是监控这个任务的,什么时候启动的,用到了哪些资源,可以用时间序列这个结构来存储这个结构,hadoop的25之前,通过jobhistory server来提供任务监控信息的收集,但是他有缺点,底层扩展性和可靠性不高,因为做这个数据量也挺大的,所以在30作了相应的修改
支持opportunistic(机会主义的) containers(容器)和distributed(分布式) scheduling(调度)
在hadoop上面的跑的任务,对资源都是争抢的状态,但是有时候需要协调人物的优先级,在hadoop30跑的时候,比如MapReduce任务,hive任务过来,对底层资源都是争抢状态,所以就需要协调人物的优先级,hadoop30的yarn就是比较灵活,比如任务在跑的时候,指定了优先级也好,指定了比如2核,8G的固定资源也好,有时候某个时间点根本用不到这么多资源,那个时间段可能只用了一半,释放了一半,这个opportunistic(机会主义的) containers(容器)就可以让不这么重要的任务临时用一下这个临时的资源
yarn配置资源可以配置的更加细化,比如原先是只支持线级别,现在支持点级别
比如这个hive依赖hadoopclient,但是还依赖某一个jar包的10版本,但是呢,这个hadoopclient依赖这个jar包的20版本,然后这两个jar包放到一起,肯定报错,因为名字一样,版本不一样,使用就会紊乱
优化,将这个hadoop client的jar包放到另外一个空间,隔离起来,这样就不会乱了
以上内容纯手敲,如有疑问或者错误请留言或者私信
以上内容纯手敲,如有疑问或者错误请留言或者私信
以上内容纯手敲,如有疑问或者错误请留言或者私信
一、Hadoop
Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop还是可伸缩的,能够处理PB级数据。此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
⒈高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
⒉高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
⒊高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
⒋高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。
Hadoop上的应用程序也可以使用其他语言编写,比如C。
二、HPCC
HPCC,HighPerformanceComputingand(高性能计算与通信)的缩写。
1993年,由美国科学、工程、技术联邦协调理事会向国会提交了“重大挑战项目:高性能计算与通信”的报告,也就是被称为HPCC计划的报告,即美国总统科学战略项目,其目的是通过加强研究与开发解决一批重要的科学与技术挑战问题。HPCC是美国实施信息高速公路而上实施的计划,该计划的实施将耗资百亿美元,其主要目标要达到:开发可扩展的计算系统及相关软件,以支持太位级网络传输性能,开发千兆比特网络技术,扩展研究和教育机构及网络连接能力。
该项目主要由五部分组成:
1、高性能计算机系统(HPCS),内容包括今后几代计算机系统的研究、系统设计工具、先进的典型系统及原有系统的评价等;
2、先进软件技术与算法(ASTA),内容有巨大挑战问题的软件支撑、新算法设计、软件分支与工具、计算计算及高性能计算研究中心等;
3、国家科研与教育网格(NREN),内容有中接站及10亿位级传输的研究与开发;
4、基本研究与人类资源(BRHR),内容有基础研究、培训、教育及课程教材,被设计通过奖励调查者-开始的,长期的调查在可升级的高性能计算中来增加创新意识流,通过提高教育和高性能的计算训练和通信来加大熟练的和训练有素的人员的联营,和来提供必需的基础架构来支持这些调查和研究活动;
5、信息基础结构技术和应用(IITA),目的在于保证美国在先进信息技术开发方面的领先地位。
三、Storm
Storm是自由的开源软件,一个分布式的、容错的实时计算系统。Storm可以非常可靠的处理庞大的数据流,用于处理Hadoop的批量数据。Storm很简单,支持许多种编程语言,使用起来非常有趣。Storm由Twitter开源而来,其它知名的应用企业包括Groupon、淘宝、支付宝、阿里巴巴、乐元素、Admaster等等。
Storm有许多应用领域:实时分析、在线机器学习、不停顿的计算、分布式RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务)、ETL(Extraction--Loading的缩写,即数据抽取、转换和加载)等等。Storm的处理速度惊人:经测试,每个节点每秒钟可以处理100万个数据元组。Storm是可扩展、容错,很容易设置和 *** 作。
四、ApacheDrill
为了帮助企业用户寻找更为有效、加快Hadoop数据查询的方法,Apache软件基金会近日发起了一项名为“Drill”的开源项目。ApacheDrill实现了Google‘sDremel
据Hadoop厂商MapR公司产品经理TomerShiran介绍,“Drill”已经作为Apache孵化器项目来运作,将面向全球软件工程师持续推广。
该项目将会创建出开源版本的谷歌DremelHadoop工具(谷歌使用该工具来为Hadoop数据分析工具的互联网应用提速)。而“Drill”将有助于Hadoop用户实现更快查询海量数据集的目的。
“Drill”项目其实也是从谷歌的Dremel项目中获得灵感:该项目帮助谷歌实现海量数据集的分析处理,包括分析抓取Web文档、跟踪安装在AndroidMarket上的应用程序数据、分析垃圾邮件、分析谷歌分布式构建系统上的测试结果等等。
通过开发“Drill”Apache开源项目,组织机构将有望建立Drill所属的API接口和灵活强大的体系架构,从而帮助支持广泛的数据源、数据格式和查询语言。
五、RapidMiner
RapidMiner是世界领先的数据挖掘解决方案,在一个非常大的程度上有着先进技术。它数据挖掘任务涉及范围广泛,包括各种数据艺术,能简化数据挖掘过程的设计和评价。
功能和特点:
免费提供数据挖掘技术和库
100%用Java代码(可运行在 *** 作系统)
数据挖掘过程简单,强大和直观
内部XML保证了标准化的格式来表示交换数据挖掘过程
可以用简单脚本语言自动进行大规模进程
多层次的数据视图,确保有效和透明的数据
图形用户界面的互动原型
命令行(批处理模式)自动大规模应用
JavaAPI(应用编程接口)
简单的插件和推广机制
强大的可视化引擎,许多尖端的高维数据的可视化建模
400多个数据挖掘运营商支持
耶鲁大学已成功地应用在许多不同的应用领域,包括文本挖掘,多媒体挖掘,功能设计,数据流挖掘,集成开发的方法和分布式数据挖掘。
六、PentahoBI
PentahoBI平台不同于传统的BI产品,它是一个以流程为中心的,面向解决方案(Solution)的框架。其目的在于将一系列企业级BI产品、开源软件、API等等组件集成起来,方便商务智能应用的开发。它的出现,使得一系列的面向商务智能的独立产品如Jfree、Quartz等等,能够集成在一起,构成一项项复杂的、完整的商务智能解决方案。
PentahoBI平台,PentahoOpenBI套件的核心架构和基础,是以流程为中心的,因为其中枢控制器是一个工作流引擎。工作流引擎使用流程定义来定义在BI平台上执行的商业智能流程。流程可以很容易的被定制,也可以添加新的流程。BI平台包含组件和报表,用以分析这些流程的性能。目前,Pentaho的主要组成元素包括报表生成、分析、数据挖掘和工作流管理等等。这些组件通过J2EE、WebService、SOAP、>
PentahoSDK共包含五个部分:Pentaho平台、Pentaho示例数据库、可独立运行的Pentaho平台、Pentaho解决方案示例和一个预先配制好的Pentaho网络服务器。其中Pentaho平台是Pentaho平台最主要的部分,囊括了Pentaho平台源代码的主体;Pentaho数据库为Pentaho平台的正常运行提供的数据服务,包括配置信息、Solution相关的信息等等,对于Pentaho平台来说它不是必须的,通过配置是可以用其它数据库服务取代的;可独立运行的Pentaho平台是Pentaho平台的独立运行模式的示例,它演示了如何使Pentaho平台在没有应用服务器支持的情况下独立运行;Pentaho解决方案示例是一个Eclipse工程,用来演示如何为Pentaho平台开发相关的商业智能解决方案。
PentahoBI平台构建于服务器,引擎和组件的基础之上。这些提供了系统的J2EE服务器,安全,portal,工作流,规则引擎,图表,协作,内容管理,数据集成,分析和建模功能。这些组件的大部分是基于标准的,可使用其他产品替换之。
七、Splunk
Splunk的功能组件主要有Forwarder、SerchHead、Indexer三种,然后支持了查询搜索、仪表盘和报表(效果真不是吹的,很精致呀),另外还支持SaaS服务模式。其中,Splunk支持的数据源也是多种类型的,基本上还是可以满足客户的需求。
目前支持hadoop1x(MRv1)、Hadoop2x(MRv2)、Hadoop2x(Yarn)三个版本的Hadoop集群的日志数据源收集,在日志管理运维方面还是处于一个国际领先的地位,目前国内有部分的数据驱动型公司也正在采用Splunk的日志管理运维服务。
八、EverString
everstring主要是通过大数据的预测分析建模为企业提供业务和客户推荐的SaaS服务,获取和积累了两个数据信息资源库,一个行业外部的资源库(公有SaaS收费形式),一个行业自己内部的资源库(私有),然后再通过机器学习和人工智能的方法对数据进行相应行业或是领域的建模,最后得到一个比较不错的结果,优化于人工可以得到的结果,而且Everstring也成为了初创大数据公司里面估值很高的公司。
安装流程
我们先来回顾上一篇我们完成的单节点的Hadoop环境配置,已经配置了一个CentOS 68 并且完成了java运行环境的搭建,Hosts文件的配置、计算机名等诸多细节。
其实完成这一步之后我们就已经完成了Hadoop集群的搭建的一半的工作了,因为我们知道通过虚拟机搭建所搭建的好处就是直接拷贝机器。多台同步进行 *** 作,减少分别配置的时间消耗浪费。这也是虚拟化技术所带来的优势。
下面,咱们进去分布式系统的详细 *** 作过程。
1、首先需要在VMWare中将之前创建的单实例的计算机进行拷贝。
这里根据之前第一篇文章的规划,我们至少需要再克隆出三台计算机,作为DataNode数据节点的数据存储。之前的上一台机器作为Master主节点进行管理。
这里先来梳理一下整个Hadoop集群的物理架构图,大家有一个直接的观念和认识,上表中已经和明确了,总共需要5台服务器来使用,四台用来搭建Hadoop集群使用,另外一台(可选)作为MySQL等外围管理Hadoop集群来使用。
原文地址:>hadoop的特点是高容错性、高吞吐量。hadoop是一个由Apache基金会所开发的分布式系统基础架构。它可以使用户在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。hadoop的框架最核心的设计就是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。
Hadoop由ApacheSoftwareFoundation公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由GoogleLab开发的Map/Reduce和GoogleFileSystem(GFS)的启发。
Hadoop是最受欢迎的在Internet上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。越来越多的企业开始使用Hadoop来对大数据进行处理分析,但Hadoop集群的整体性能却取决于CPU、内存、网络以及存储之间的性能平衡。而在这篇文章中,我们将探讨如何为Hadoop集群构建高性能网络,这是对大数据进行处理分析的关键所在。
关于Hadoop
“大数据”是松散的数据集合,海量数据的不断增长迫使企业需要通过一种新的方式去管理。大数据是结构化或非结构化的多种数据类型的大集合。而 Hadoop则是Apache发布的软件架构,用以分析PB级的非结构化数据,并将其转换成其他应用程序可管理处理的形式。Hadoop使得对大数据处理成为可能,并能够帮助企业可从客户数据之中发掘新的商机。如果能够进行实时处理或者接近实时处理,那么其将为许多行业的用户提供强大的优势。
Hadoop是基于谷歌的MapReduce和分布式文件系统原理而专门设计的,其可在通用的网络和服务器硬件上进行部署,并使之成为计算集群。
Hadoop模型
Hadoop的工作原理是将一个非常大的数据集切割成一个较小的单元,以能够被查询处理。同一个节点的计算资源用于并行查询处理。当任务处理结束后,其处理结果将被汇总并向用户报告,或者通过业务分析应用程序处理以进行进一步分析或仪表盘显示。
为了最大限度地减少处理时间,在此并行架构中,Hadoop“moves jobs to data”,而非像传统模式那样“moving data to jobs”。这就意味着,一旦数据存储在分布式系统之中,在实时搜索、查询或数据挖掘等 *** 作时,如访问本地数据,在数据处理过程中,各节点之间将只有一个本地查询结果,这样可降低运营开支。
Hadoop的最大特点在于其内置的并行处理和线性扩展能力,提供对大型数据集查询并生成结果。在结构上,Hadoop主要有两个部分:
Hadoop分布式文件系统(HDFS)将数据文件切割成数据块,并将其存储在多个节点之内,以提供容错性和高性能。除了大量的多个节点的聚合I/O,性能通常取决于数据块的大小——如128MB。而传统的Linux系统下的较为典型的数据块大小可能是4KB。
MapReduce引擎通过JobTracker节点接受来自客户端的分析工作,采用“分而治之”的方式来将一个较大的任务分解成多个较小的任务,然后分配给各个TaskTrack节点,并采用主站/从站的分布方式(具体如下图所示):
Hadoop系统有三个主要的功能节点:客户机、主机和从机。客户机将数据文件注入到系统之中,从系统中检索结果,以及通过系统的主机节点提交分析工作等。主机节点有两个基本作用:管理分布式文件系统中各节点以及从机节点的数据存储,以及管理Map/Reduce从机节点的任务跟踪分配和任务处理。数据存储和分析处理的实际性能取决于运行数据节点和任务跟踪器的从机节点性能,而这些从机节点则由各自的主机节点负责沟通和控制。从节点通常有多个数据块,并在作业期间被分配处理多个任务。
部署实施Hadoop
各个节点硬件的主要要求是市县计算、内存、网络以及存储等四个资源的平衡。目前常用的并被誉为“最佳”的解决方案是采用相对较低成本的旧有硬件,部署足够多的服务器以应对任何可能的故障,并部署一个完整机架的系统。
Hadoop模式要求服务器与SAN或者NAS进行直接连接存储(DAS)。采用DAS主要有三个原因,在标准化配置的集群中,节点的缩放数以千计,随着存储系统的成本、低延迟性以及存储容量需求不断提高,简单配置和部署个主要的考虑因素。随着极具成本效益的1TB磁盘的普及,可使大型集群的TB级数据存储在DAS之上。这解决了传统方法利用SAN进行部署极其昂贵的困境,如此多的存储将使得Hadoop和数据存储出现一个令人望而却步的起始成本。有相当大一部分用户的Hadoop部署构建都是采用大容量的DAS服务器,其中数据节点大约1-2TB,名称控制节点大约在1-5TB之间,具体如下图所示:
来源:Brad Hedlund, DELL公司
对于大多数的Hadoop部署来说,基础设施的其他影响因素可能还取决于配件,如服务器内置的千兆以太网卡或千兆以太网交换机。上一代的CPU和内存等硬件的选择,可根据符合成本模型的需求,采用匹配数据传输速率要求的千兆以太网接口来构建低成本的解决方案。采用万兆以太网来部署Hadoop也是相当不错的选择。
万兆以太网对Hadoop集群的作用
千兆以太网的性能是制约Hadoop系统整体性能的一个主要因素。使用较大的数据块大小,例如,如果一个节点发生故障(甚至更糟,整个机架宕机),那么整个集群就需要对TB级的数据进行恢复,这就有可能会超过千兆以太网所能提供的网络带宽,进而使得整个集群性能下降。在拥有成千上万个节点的大型集群中,当运行某些需要数据节点之间需要进行中间结果再分配的工作负载时,在系统正常运行过程中,某个千兆以太网设备可能会遭遇网络拥堵。
每一个Hadoop数据节点的目标都必须实现CPU、内存、存储和网络资源的平衡。如果四者之中的任意一个性能相对较差的话,那么系统的潜在处理能力都有可能遭遇瓶颈。添加更多的CPU和内存组建,将影响存储和网络的平衡,如何使Hadoop集群节点在处理数据时更有效率,减少结果,并在Hadoop集群内添加更多的HDFS存储节点。
幸运的是,影响CPU和内存发展的摩尔定律,同样也正影响着存储技术(TB级容量的磁盘)和以太网技术(从千兆向万兆甚至更高)的发展。预先升级系统组件(如多核处理器、每节点5-20TB容量的磁盘,64-128GB内存),万兆以太网卡和交换机等网络组件是重新平衡资源最合理的选择。万兆以太网将在Hadoop集群证明其价值,高水平的网络利用率将带来效益更高的带宽。下图展示了Hadoop集群与万兆以太网的连接:
许多企业级数据中心已经迁移到10GbE网络,以实现服务器整合和服务器虚拟化。随着越来越多企业开始部署Hadoop,他们发现他们完全不必要大批量部署1U的机架服务器,而是部署更少,但性能更高的服务器,以方便扩展每个数据节点所能运行的任务数量。很多企业选择部署2U或4U的服务器(如戴尔 PowerEdge C2100),每个节点大约12-16个核心以及24TB存储容量。在这种环境下的合理选择是充分利用已经部署的10GbE设备和Hadoop集群中的 10GbE网卡。
在日常的IT环境中构建一个简单的Hadoop集群。可以肯定的是,尽管有很多细节需要微调,但其基础是非常简单的。构建一个计算、存储和网络资源平衡的系统,对项目的成功至关重要。对于拥有密集节点的Hadoop集群而言,万兆以太网能够为计算和存储资源扩展提供与之相匹配的能力,且不会导致系统整体性能下降。如果是集群的话,我考虑需要流畅运行的话,2核4G配置是可以满足的。因为这个集群形式,用于适用于物联网、车联网、监控、安全风控、即时通讯、消息存储等行业场景,所以数据量是比较大的,所以配置太低了跑不动,会卡死的。
因为hadoop是海量数据的处理能力,所以服务器一定不能太小配置了,跑不动了就没实际用途了。最好使用4核8G内存及以上配置。
因为这方面内容较多,这里也写不开那么多内容,所以你可以留言或到我的博客上搜索相关内容,老魏有写过教程,还不止一篇,都挺详细的内容,可以帮助你入门。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)