IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Hadoop

共 44 篇相关文章

IT 累计浏览 2,649

事无巨细 Hadoop2.6.4 环境搭建步骤详解

这篇讲的是作者基于自己的Mac开发机,在CentOS 6.5服务器上从零搭建Hadoop 2.6.4环境的完整历程。作者事无巨细地记录了每一步操作和背后的思考,像一位耐心的向导。 摘要从最基础的环境准备开始,详细说明了如何配置SSH免密码连接以提升后续操作效率,并推荐了ssh-copy-id这一可靠方法。接着,文章阐述了如何创建独立的dps-hadoop用户和用户组,以及为其配置sudo权限,体现了规范的权限管理思路。在基础设施层面,作者分享了如何配置本地DNS服务器,并给出了修改网络配置文件以永久生效的具体位置。 核心的Hadoop安装部分,文章涵盖了JDK 8u77的下载、安装与环境变量配置,并特别指出了将JAVA_HOME写入~/.bashrc而非全局配置文件的重要性。最后,详细说明了如何下载并解压Hadoop 2.6.4,以及配置HADOOP_HOME的关键步骤。整篇记录覆盖了从连接、用户、环境到软件安装的全链条,对新手而言,这份笔记省去了大量摸索和试错的时间。

IT 累计浏览 2,025

HLLC基数估算算法在腾讯数据仓库TDW中应用

这篇讲的是腾讯数据仓库TDW如何用一个巧办法,又快又省地计算海量数据里的“不同值个数”(基数)。背景很实际:传统精确去重在大数据面前太耗资源了。文章的核心方案,是引入了HLLC(HyperLogLog Counting)基数估算算法,并将其封装成一个极其简单的SQL聚合函数`est_distinct`。 文章不仅告诉你“是什么”,还深入拆解了“怎么做”。从HQL如何翻译成MapReduce作业,到Map端如何用一个64K桶的数组进行局部聚合,再到Reduce端如何合并数组并套用HLLC公式计算,整个过程图文并茂。其中的难点和巧妙之处在于内存管理:当数据分布不均、单个Key记录海量时,TDW采用“分而治之”策略动态分配内存块,并设计了专用的序列化(SerDe)方式来高效处理溢写到磁盘的Hash表片段,有效平衡了内存与IO开销。 最后通过实测对比给出了明确结论:在数据分布集中的较理想条件下,使用64K桶的HLLC估值计算(精度超99.4%),相比精确去重能带来数倍的效率提升。对于需要在大规模数据上快速获得近似唯一值计数的场景,这提供了非常清晰且可落地的实践参考。

IT 累计浏览 2,777

大规模Hadoop集群在腾讯数据仓库TDW的实践

这篇讲的是腾讯数据仓库TDW如何将多个小集群合并为单个超大规模Hadoop集群的实战。作者从集群碎片化导致的数据共享困难、资源利用率低以及运维成本高等痛点出发,剖析了从400台节点扩展到4000台时遇到的核心挑战——Hadoop的单点瓶颈。 为解决JobTracker的调度瓶颈,他们借鉴YARN和Corona,将计算引擎重构为三层架构。关键优化包括将单路心跳拆分为任务和资源两路心跳,引入细粒度的资源管理概念,并将调度模式从基于心跳的拉取变为ClusterManager主动下推。这使平均调度时间从80ms降至1ms,极大提升了扩展性与效率。 针对存储层的NameNode单点风险,TDW设计了“一主两热备”的高可用方案,通过日志同步保证热备节点能随时接管,将计划内服务停止时间从近2小时大幅缩短。 整个改造在未大幅变动外围调度系统的前提下,成功支撑了数千节点规模的单集群,体现了在工程复杂度与系统收益间的务实权衡。

IT 累计浏览 5,143

百度是如何使用hadoop的

这篇文章讲的是百度如何将Hadoop深度应用于其海量中文搜索及数据处理场景。面对日志存储、网页挖掘、商业分析、在线反馈等复杂需求,百度不仅大规模部署了Hadoop(约700台机器,日均处理120TB数据),还针对实际运行中的效率与可靠性问题进行了系统性改造。 具体来看,百度在多个层面做了定制优化:在MapReduce策略上,通过限制作业并发、调整预测执行和基于节点内存调度来提升稳定性;对HDFS增强了权限控制与容错能力,比如让分区与节点解耦,避免单点故障影响全局。此外,他们还修改了推测执行(Speculative)策略,用速率倒数来更公平地触发备份任务,并引入资源控制机制,甚至修改Linux内核来限制进程内存使用。 文章也坦诚分享了百度在实践中遇到的痛点,包括MapReduce的I/O与排序效率、HDFS的随机访问延迟、内存管理压力以及作业调度精细化等问题,并针对如Streaming只能处理文本数据的局限,提出了自研的Bistreaming方案。这些细节揭示了在超大规模环境下,如何将开源框架“打磨”得更适合生产需求——不仅是使用,更是持续的调优与二次开发。

IT 累计浏览 1,599

解决HDFS磁盘扫描导致死亡结点的问题

这篇讲的是作者在升级Hadoop至2.0后,处理的一个棘手的生产故障:集群中磁盘数量多的DataNode会周期性地变为“死亡结点”,虽未立刻影响业务,但一次双副本DataNode同时死亡导致了数据丢失。 问题排查的关键突破口在于“6小时”这个固定间隔。作者将它锁定为DataNode的周期性磁盘扫描任务,并通过jstack抓取堆栈发现了隐蔽的根因:在扫描过程中,数据块对比的步骤需要对核心的DataSet对象加锁,而该步骤中一个看似无害的`File.length()`方法调用,在底层会执行磁盘IO操作。在磁盘压力较大时,这个操作会耗时很长,导致DataSet锁被长时间持有,进而阻塞了心跳线程和所有数据传输线程,造成DataNode被NameNode误判为死亡。 解决方法巧妙且高效:将引发IO操作的`getlength`提前到第二步异步的磁盘扫描任务中执行,从而将持锁时间从几十分钟大幅缩短至2秒左右。文章完整还原了从现象观察、假设推翻到利用工具(jstack)锁定真凶的全过程,对理解分布式系统中锁竞争、IO影响以及复杂故障排查思路很有启发。最终,他们将修复补丁提交至了Apache社区(HDFS-5341)。

IT 累计浏览 3,503

YARN ResourceManager调度器的分析

这篇深度剖析了YARN ResourceManager中三种核心调度器:FifoScheduler、CapacityScheduler与FairScheduler的设计逻辑与差异。文章从ResourceManager作为资源调度中心的架构出发,详细拆解了调度器的事件处理机制与异步分配模型——即调度器如何通过响应节点心跳、应用提交等六类事件,在内存中维护队列、应用与Container的关系,并最终完成资源匹配。 文章的核心价值在于清晰的对比分析。FifoScheduler结构最简单,适合小规模场景;CapacityScheduler通过树状队列与容量限制,旨在最大化集群整体吞吐与利用率;而FairScheduler则侧重于多用户间的资源公平共享,支持动态队列创建与资源抢占。除了基础模型,作者还深入解读了本地优化与延迟调度机制:调度器会优先匹配与数据本地性一致的Container,若不匹配则“延迟”等待机会,以此平衡网络开销与调度效率。 文末提供了与调度器紧密相关的集群参数配置解读,帮助读者将理论理解落地。对于需要根据实际业务需求(如多租户隔离、公平性或高吞吐)选型与调优YARN调度器的工程师而言,这是一篇逻辑清晰、细节扎实的参考。

IT 累计浏览 2,785

集群资源调度系统简介与galaxy资源调度系统简介

这篇讲的是集群资源调度系统,它为什么重要,以及内部的一个具体实践。 随着公司集群规模扩大,资源利用率低和部署运维复杂成了迫切需要解决的问题。文章从IaaS的角度切入,指出资源调度系统的核心价值在于实现资源共享、弹性管理与自动化运维。作者从谷歌Omega论文出发,梳理了三代调度架构的演进:从结构简单但扩展性差的中央式调度器,到支持大规模集群和多框架混部的双层调度器(以Mesos为代表),再到通过全局共享状态和乐观锁提升并发性能的第三代架构。文中以Mesos的“Resource Offer”机制为例,清晰展示了资源如何分配给具体应用。 文章后半部分将视角转向内部实践。为了支撑“万”级别流计算任务并解决现有引擎在大集群、多租户下的瓶颈,galaxy平台设计了一套轻量级的双层调度系统,目标是实现多集群间的资源共享与任务隔离。这篇不仅梳理了技术脉络,也展示了如何从通用架构中汲取灵感,解决实际业务中的资源调度挑战。

IT 累计浏览 3,330

企业掘金大数据的两种选择

这篇讲的是企业如何真正将数据转化为利润,而不仅仅停留在“拥有数据”的层面。作者从“很多公司坐拥金矿却不知如何挖掘”的普遍困境出发,明确指出了两条核心路径:一是优化业务流程,二是创新数据产品。 在流程层面,文章强调现代数据科学家需要超越传统Excel和SQL,综合运用统计、机器学习等工具。例如通过分析SaaS高端客户特征来优化营销,或像Target那样建立预测模型识别潜在消费群体。在产品层面,除了直接出售数据(如Twitter授权DataSift),更多公司是将数据智能融入产品,比如广告平台精准投放、电商推荐系统提升购买率,或媒体网站个性化内容展示。 文章最后给出了具体行动指南:企业应尽可能全量保存各类原始数据,根据规模聘请或培养数据科学家团队,并考虑将自有数据产品化。而这一切成功的基础,在于管理层必须建立以数据为导向的决策文化。

IT 累计浏览 3,679

数据开发技术概述

这篇讲的是面向海量数据计算入门者的数据开发技术全景。作者冷川从淘宝数据平台及开发技术的演进过程出发,系统梳理了当前主流的数据开发技术栈。 文章的核心在于为我们呈现了一幅清晰的“目前主要的数据开发技术框架图”。它不仅仅罗列技术点,而是结合平台实际场景,讲解了这些技术如何被组织和应用。这对于想建立系统性认知、而非零散了解的同学非常有帮助。 在当前超海量数据的背景下,文章最后抛出了一个关键思路:数据同学不应被动使用技术,而要主动结合系统痛点去思考和推动技术应用。这从单纯的“技术介绍”提升到了“工程思维”的层面,给读者留下了具体的行动方向。

IT 累计浏览 2,039

hadoop笔记 (2):pipes例子分析 (1)

这篇讲的是Hadoop中一个相对小众但很实用的C++接口——Pipes。由于官方文档的缺失,作者选择了一条很实际的路径:直接从Hadoop自带的示例代码入手,一步步拆解其工作原理。 文章基于Debian 6 amd64和Hadoop 1.0.3的环境,没有空谈理论,而是带着读者走进具体的代码文件。分析的重点在于Pipes如何作为桥梁,让C++编写的Mapper和Reducer能与Java框架进行通信和协作。作者梳理了从任务启动、数据流传输到结果汇总的关键流程,揭示了框架背后如何用序列化和网络通信封装了分布式计算的复杂性。 对于想在Hadoop生态里使用C++,或者对跨语言RPC实现感兴趣的开发者来说,这篇从实际例子出发的梳理,比零散的片段信息更能帮你建立起对Pipes工作机制的整体认识。

IT 累计浏览 2,162

hadoop笔记 (1):安装和配置

这篇笔记记录了在三台Debian 6机器上搭建Hadoop 1.0.3集群的全过程。作者从实际操作出发,提到虽然官方文档详细,但按部就班仍难以快速构建出一个可用的环境。核心挑战在于如何高效地把理论步骤变成可运行的集群。 最终,作者通过参考一篇适用于旧版本(0.20)的教程,成功解决了配置上的困惑,并验证了其方法在1.0.3版本上依然有效。文章具体展示了环境选择(OpenJDK-6)、遇到的配置瓶颈以及最终得以运行的解决方案,为手头有类似机器资源、想快速跑通Hadoop环境的读者提供了一份经过验证的、可复现的实践记录。

IT 累计浏览 4,008

通过eclipse调试MapReduce任务

MapReduce开发者常遇到一个问题:在本地用IDE写好的Mapper和Reducer,提交到集群后行为与预期不符,调试起来却无从下手。这篇讲的正是如何用Eclipse作为调试器,来透视MapReduce作业的执行过程。 作者从实际开发痛点出发,详细演示了在Eclipse中配置和启动MapReduce本地调试任务的步骤。核心在于利用Hadoop的LocalJobRunner,将MR作业运行在本地JVM中,从而可以直接用IDE的调试功能。文章涵盖了关键设置点,比如如何配置Map和Reduce的入口类与参数,如何在Mapper和Reducer的逻辑中设置断点,并观察变量状态。通过这种方式,开发者可以像调试普通Java程序一样,单步跟踪数据从InputSplit被读取、经过Map函数处理、到分区、排序,最终由Reduce函数聚合的全过程。 这种调试方法将原本“黑盒”的分布式任务执行过程,变成了透明、可逐步跟踪的流程,极大地方便了对业务逻辑正确性的验证和性能瓶颈的初步定位,是从代码逻辑通向任务执行现场的一座桥梁。

IT 累计浏览 2,169

在Hadoop中提升task的启动速度

这篇讲的是如何解决Hadoop增量DUMP过程中,因Task启动缓慢而导致整体任务延迟的问题。作者在实际业务中观察到,一些执行时间很短的小Job,其启动阶段却经常耗时几十秒,严重拖慢了数据处理的时效性。 问题的根源指向了JVM冷启动与类加载带来的开销。由于Job小而频繁,每个新任务都需要重新初始化JVM和加载依赖,这部分固定耗时在频繁启停的场景下被急剧放大。作者的核心解决思路是通过引入“JVM复用”和“预热”机制来规避这些固定开销。具体方案包括配置YARN的容器重用策略,让同一应用的不同任务尝试复用已启动的JVM;同时,在作业正式提交前,预先启动一个测试任务来触发关键类的加载,相当于为后续任务“预热”了执行环境。 实施这些优化后,Task的冷启动时间被大幅压缩,增量DUMP的整体吞吐效率得到了显著提升。这篇文章清晰地从一个具体性能瓶颈出发,逐步分析并给出了可落地的调优方案,对于处理类似高频短作业的场景很有参考价值。

IT 累计浏览 3,918

分布式计算平台Hadoop 发展现状乱而稳定的解读

这篇讲的是Hadoop这个老牌分布式计算平台,在“乱”象纷呈的技术世界里,如何依然保持“稳定”的生存逻辑。作者从Hadoop十余年的技术演进路径出发,梳理了其生态系统内核心组件(如HDFS、MapReduce、YARN)的迭代如何从“大包大揽”转向“各司其职”。 文章重点剖析了当前面临的现实:在Spark、Flink等新兴计算引擎的冲击下,Hadoop的传统批处理优势似乎不再耀眼。但它并未被淘汰,反而在特定领域——比如需要极致稳定性的超大规模离线数据仓库、以及作为云上对象存储之上的计算层——找到了不可替代的位置。作者通过对比不同计算框架的底层设计哲学(数据移动 vs 计算移动),清晰地揭示了Hadoop“稳”的根源在于其成熟的生态和经过验证的可靠性,而“乱”则源于社区版本分支、商业发行版博弈以及开发者注意力的迁移。 最终,文章给出的启示是:技术选型不必追逐最新标签。对于追求海量历史数据分析、且对成本与长期维护有严格要求的场景,一个精心维护、与云原生工具结合得当的Hadoop集群,依然是那个沉稳的“压舱石”。这为在技术浪潮中感到迷茫的工程师,提供了一个回归理性与务实的视角。

IT 累计浏览 5,996

AWS云平台系列介绍(一):AWS平台与EC2介绍

这篇讲的是如何快速理解AWS云平台的全貌及其核心计算服务EC2。作者从AWS庞大的服务矩阵切入,没有堆砌功能列表,而是帮读者梳理出一条清晰的学习主线:先把握区域、可用区、边缘站点这些基础架构概念,再重点深入到最常用的EC2实例。文章详细对比了通用型、计算优化型、内存优化型等不同实例族的适用场景,并给出了如何根据业务负载的CPU、内存、网络需求进行选型的具体思路,比如Web应用常用t系列,内存密集型任务选r系列。对于新手容易困惑的AMI镜像、密钥对、安全组等配置项也做了实战化解释。结尾处回归到成本视角,点明了按需、预留、Spot等计费模式的灵活组合能显著优化开支,为后续的架构设计奠定了扎实的起点。

IT 累计浏览 2,796

关于HBase的一些零碎事

这篇讲的是HBase这个分布式数据库如何从技术幕后走向前台,成为支撑大规模实时应用的关键选型之一。故事的起点是Facebook那个经典的决策:他们选择HBase来构建实时消息系统,以处理每秒数十万条消息、总计超过135亿用户的海量数据洪流。 文章的作者没有停留在介绍HBase的基本概念,而是从这个标志性的工业案例出发,勾勒出HBase持续升温背后的技术逻辑。它抓住了HBase作为面向列存储、基于Hadoop生态的分布式数据库,在海量数据随机实时读写场景下不可替代的价值。这意味着,它解决了传统数据库在数据规模和并发能力上难以逾越的瓶颈。 更进一步,文章通过Facebook的案例,延伸探讨了HBase在其他需要高可靠、高性能存储的互联网公司中的渗透与应用,展现了其生态的蓬勃发展。对于技术选型者而言,这不仅是一个工具的故事,更反映了数据规模驱动下存储架构演进的一个清晰切面。

IT 累计浏览 3,705

《big data glossary》之MapReduce

这篇翻译自O'Reilly《Big Data Glossary》第三章的文章,聚焦于大数据处理的基石——MapReduce。作者从MapReduce的核心思想“分而治之”出发,讲解了这个编程模型如何通过Map(映射)和Reduce(归约)两个阶段,将海量数据任务分发到集群的成百上千台机器上并行处理。 文章并未停留在概念层面,而是深入剖析了其背后的实现逻辑:一个作业被拆分成多个任务,由主节点(Master)协调分配给工作节点(Worker),中间结果通过网络传输并聚合。这种设计巧妙地解决了可靠性与扩展性的问题——即使部分节点失效,任务也能被重新调度。 同时,译文也指出了MapReduce的典型适用场景:对大规模数据集进行批量、离线的分析和聚合,例如日志处理或生成报表。它并非万能,对于需要低延迟或复杂迭代的任务,后续的框架如Spark则提供了不同的思路。 通过这篇清晰的译文,读者可以快速把握MapReduce的设计哲学与工程权衡,这为理解Hadoop生态乃至更现代的大数据架构打下了坚实的概念基础。

IT 累计浏览 2,775

X-RIME: 基于Hadoop的开源大规模社交网络分析工具

这篇讲的是IBM中国研究院与人民搜索合作开发的一个开源工具——X-RIME。他们从一个很实际的痛点出发:当社交网络数据规模达到百亿级关系时,传统的分析工具和算法往往不堪重负,难以进行高效且深度的挖掘。 作者团队的核心方案,是借助Hadoop分布式计算框架,重新设计并实现了一套适用于大规模社交网络图的分析算法库。X-RIME不仅封装了像PageRank、标签传播这类基础图算法,更关键的是它针对Hadoop的MapReduce范式做了深度优化与扩展,使得在成百上千台机器上并行处理海量社交关系图成为可能。它本质上提供了一个可扩展的平台,让用户能够相对容易地部署和运行复杂的网络分析任务。 文章通过实际的大规模数据验证了X-RIME的效能。对于研究者或工程师而言,这个工具的价值在于它将处理TB甚至PB级社交网络数据的能力,以一种开源、可获取的方式提供了出来。如果你正在构建或分析一个巨大的关系型数据集,X-RIME提供了一个经过验证的、基于Hadoop的解决方案参考。

IT 累计浏览 2,177

Hadoop++:Hadoop的局部性能改良

这篇讲的是一个对Hadoop MapReduce框架本身进行性能优化的项目——Hadoop++。 它要解决的核心问题,是原生Hadoop在某些工作负载,特别是迭代式查询和表连接操作上的性能瓶颈。作者提出了一种“非入侵式”的优化思路,也就是说,不用侵入并修改Hadoop的底层核心代码。相反,他们通过自定义框架中的关键函数,比如数据分片(split)的逻辑,来让MapReduce作业在执行时能做出更聪明的决策。 这个项目由德国萨尔兰大学的Jens Dittrich教授团队主持。其巧妙之处在于,它允许用户在不抛弃现有Hadoop生态和代码的前提下,通过一个附加层来“加速”任务。根据项目描述,这种方式能显著提升查询和联接操作的效率,让Hadoop在处理复杂分析时跑得更快。 简单来说,Hadoop++就像给一辆稳重但速度普通的卡车,换上了一套更高效的传动系统和导航。它没有改变卡车的基本结构,却让它的特定性能(比如爬坡和城市穿梭)得到了实实在在的增强。对于需要优化Hadoop特定场景性能的开发者来说,这是一个值得了解的实现思路。

IT 累计浏览 12,197

Zookeeper工作原理

这篇讲的是分布式协调服务Zookeeper的核心原理。在分布式系统中,工程师常常面临锁机制难以正确使用、基于消息的协调方案又不够通用等问题。Zookeeper正是为了提供一种可靠、可扩展且可配置的统一协调机制而生的。 文章指出,Zookeeper是Hadoop生态的重要组成部分,它通过一组简单的原语,就能帮助分布式应用轻松实现同步服务、配置维护和命名服务等关键功能。作者聚焦于“它为什么存在”以及“它在系统中扮演什么角色”这两个根本问题,对于具体的使用方法则没有展开。 如果你对分布式系统中的状态协调感到棘手,或者想理解Hadoop底层是如何保证组件协同的,这篇文章从原理层面梳理了Zookeeper的设计初衷和价值所在。