拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Hadoop入门指南:从HDFS、MapReduce到YARN核心架构与部署实战

1. 为什么第二节课就要讲Hadoop概述先搞懂它到底解决了什么问题很多初学者第一次接触Hadoop都会有个疑惑这玩意儿到底是个什么东西网上一搜铺天盖地的“分布式存储”“大数据处理”“MapReduce”这些术语砸过来越看越懵。我当年学的时候也是这样看了半天教程最后还是不知道Hadoop能干嘛、为什么要学它、学了能用到什么地方。所以这一节课我们不急着敲命令、不急着搭环境先把Hadoop这头大象从头到尾摸一遍。你只有真正理解了Hadoop的设计思想和核心组件后面做伪分布式搭建、集群配置、跑MapReduce任务的时候才知道自己每一步在做什么出了问题也知道往哪个方向排查。这不是废话铺垫这是我在带人入门时总结出来的经验——凡是上来就照着教程敲命令的十有八九卡在环境变量或者配置文件上因为他不理解这些配置是给谁用的凡是先把架构搞清楚的后面遇到报错自己就能猜个八九不离十。Hadoop到底是什么用一句话说它是一个开源的、可靠的、可扩展的分布式计算框架用来在成百上千台普通服务器上存储和处理海量数据。注意“普通服务器”这几个字这是Hadoop的核心哲学——不需要买昂贵的小型机或专用存储设备用廉价的商用硬件就能搭建起一个强大的数据处理平台。这个思想在2003年前后Google发表的三篇论文GFS、MapReduce、BigTable里被系统阐述后来Doug Cutting根据这些论文实现了开源的Hadoop并借用了儿子玩具大象的名字。这段历史你在很多面试题里都会看到Hadoop的起源几乎是必考项。那么Hadoop到底解决了什么问题我给你打个比方。假设你有一本一千万页的字典想在里面查到某个字出现的次数。一个人从头翻到尾可能要翻一个月但如果你把字典拆成一千份找一千个人每人翻一份最后把结果汇总起来可能一天就搞定了。这里有两件事第一这一千万页的字典放不下怎么办拆开放到一千个人的书包里这就是分布式存储。第二这一千个人怎么分工、怎么协作、有人翻得慢怎么办、有人翻错了怎么办这就是分布式计算和任务调度。Hadoop就是干这两件事的。本篇文章适合的人群很明确刚学完大数据基础或Linux操作的初学者准备搭建Hadoop环境的学生以及准备大数据面试的开发者。如果你已经玩过一段时间Hadoop这篇文章也可以帮你把零散的知识点串起来查漏补缺。下面我从设计思路、核心组件、工作原理、生态圈到部署选型一层一层给你拆开讲。2. Hadoop的设计思路为什么它敢用一堆破服务器扛起大数据2.1 从单机到分布式Hadoop出现之前的世界在Hadoop出现之前处理数据主要靠什么靠一台性能越来越强的服务器也就是所谓的“垂直扩展”。数据量大了就加内存、加CPU、换更好的硬盘。这个思路在数据量是GB级别的时代没什么问题但到了TB甚至PB级别就撑不住了——一台机器的硬件升级是有物理极限的而且贵得离谱。于是“水平扩展”的思路出现了既然一台机器扛不住那就用很多台机器一起扛。但问题随之而来数据放在哪台机器上某台机器突然坏了怎么办任务怎么分配到各台机器上各台机器计算的结果怎么汇总这些问题如果全靠程序员自己写代码解决成本太高了而且每写一个应用都要重复解决一遍。Hadoop的价值就在于它把这些分布式系统的通用问题都封装好了让你在上层写代码时感觉就像在操作一台超级电脑一样简单。这里有个很关键的设计取舍Hadoop选择了“移动计算而不是移动数据”的策略。什么意思呢数据量太大了把数据从存储节点搬到计算节点网络传输成本极高反过来把计算程序通常只有几十到几百KB发送到数据所在的节点上执行成本低得多。所以Hadoop会把计算任务调度到数据所在的机器上去跑这就是“数据本地性”优化也是MapReduce性能优化的核心思想之一。2.2 主从架构和“一切皆有可能失败”的设计前提Hadoop采用的是经典的主从架构。整个集群里有一台主节点Master和很多台从节点Slave。主节点负责管理元数据、分配任务、监控从节点状态从节点负责实际存储数据和执行计算。这个设计的好处是职责清晰管理集中坏处是主节点会成为单点故障——所以在生产环境里主节点通常要配置高可用HA方案用ZooKeeper来实现主备切换。这也是为什么那么多人在搜“Hadoop和ZooKeeper整合实战”因为只要是真正的生产集群ZooKeeper几乎是绕不开的。另一个重要的设计前提是Hadoop默认硬件会坏。你不用假设服务器很稳定相反Hadoop在设计时就把“节点宕机”当作常态。数据被切成块Block之后每一块都会在集群里保存多个副本默认3份分别放在不同的机器上。这样就算两台机器同时挂了数据也不会丢。这个设计思想在分布式系统领域非常经典——把不可靠的硬件组合成可靠的系统。这里有几个核心概念你学Hadoop第一天就要记牢Block数据块HDFS默认把文件切成128MB大小的块旧版本是64MB每个块独立存储。NameNode名称节点主节点管理文件系统的命名空间和元数据也就是“这份文件分成了几块、分别存在了哪几台机器上”。DataNode数据节点从节点负责真正存储数据块并周期性地向NameNode汇报自己存储了哪些块。SecondaryNameNode辅助名称节点注意它不是NameNode的热备它的工作是定期合并NameNode的编辑日志Edits Log和镜像文件FsImage帮助NameNode在重启时更快恢复元数据。这个概念在面试里经常被拿出来考。提示面试的时候如果被问到“SecondaryNameNode是不是NameNode的备份”一定要答“不是”它在异常宕机时无法直接接替NameNode的工作只是辅助恢复元数据。无数人栽在这个细节上。2.3 Hadoop 1.x到3.x版本演进里的设计进化Hadoop从诞生到现在经历了几个大版本每个版本的核心变化你最好心里有数。Hadoop 1.x时代只有两大核心组件HDFS分布式存储和MapReduce分布式计算。但MapReduce在1.x里同时承担了两份工作——执行计算任务和负责资源调度。这就好比一家公司里同一个部门既要干活又要管人事和财务分配效率自然上不去。而且MapReduce只能跑MapReduce任务其他计算框架比如Spark、Flink想用HDFS上的数据却没法接入这套资源调度体系。所以Hadoop 2.x做了个大手术把资源调度从MapReduce里拆了出来单独成了YARNYet Another Resource Negotiator。从此以后Hadoop变成了三层架构底层HDFS负责存储中间YARN负责资源管理和任务调度上层MapReduce以及后来的Spark、Flink等只是跑在YARN上的计算框架之一。这个改动的影响极其深远它让Hadoop从“一套整体方案”变成了“一个平台”大家都来用它存数据、申请资源至于用哪种计算引擎来处理数据你自己选。Hadoop 3.x最显著的变化是默认副本数从3降到了2通过EC纠删码技术节省存储空间支持了多NameNode的联邦模式还引入了基于GPU的异构调度等能力。3.x对NameNode的内存占用做了优化性能比2.x有明显提升。如果你是新手我建议直接学3.x版本别再去看那些基于1.x的老教程了。3. 逐一拆解三大核心组件HDFS、MapReduce、YARN分别是干什么的3.1 HDFS把大文件拆开存到多台机器上HDFSHadoop Distributed File System是整个Hadoop家族的存储底座。它的目标非常纯粹用廉价的商用服务器提供一个可以存储超大文件、并且能容忍节点故障的分布式文件系统。HDFS的设计有几个显著特点。第一它适合存储超大文件单个文件可以从GB到TB甚至PB级别所以它把文件切成固定大小的Block默认128MB散布到集群各节点上。第二它适合“一次写入、多次读取”的场景——也就是数据写进去之后基本不修改主要用来做批处理分析。第三它不适合低延迟的数据访问你不可能用HDFS去做实时查询它的强项是吞吐量而不是响应速度。第四它不适合存大量小文件因为每个文件的元数据都要由NameNode记录在内存里小文件太多会把NameNode的内存撑爆——这是生产环境最常见的坑之一。HDFS的读写流程你需要能自己画出来。写入流程大概是这样的客户端向NameNode发起写文件请求NameNode检查权限和空间后返回可以写入的DataNode列表客户端把数据切成块按流水线方式依次写入第一个DataNode再由它传给第二个、第三个完成副本复制全部写完后客户端通知NameNode更新元数据。读取流程更简单客户端向NameNode问“这个文件分成了哪些块、都在哪些DataNode上”NameNode返回元数据信息客户端直接跟对应的DataNode建立连接读取数据。注意读数据的时候客户端是直接从DataNode拿不经过NameNode这样NameNode就不会成为数据读写的瓶颈。3.2 MapReduce把“分而治之”思想变成编程模型MapReduce是Hadoop的计算引擎它的核心思想就四个字分而治之。把一个大任务拆成很多小任务并行处理最后把结果合并起来。很多初学者第一次听到Map和Reduce这两个词觉得很高深其实它们的名字就是字面意思Map就是“映射”把数据一对一分发出去做整理分类Reduce就是“归约”把Map处理的结果汇总起来。拿统计一个文件里每个单词出现的次数来举例这就是经典的WordCount。Map阶段每一行数据被读入拆成一个个单词每个单词记一次“1”Reduce阶段相同单词的计数被加总起来得到最终结果。整个过程分三步走Map阶段框架把输入文件拆成若干分片Split每个分片由一个Map任务处理Map输出的中间结果暂存在本地磁盘。Shuffle阶段这是MapReduce的“灵魂”也是“时间黑洞”它负责把Map输出的数据按照key排序、分组然后通过网络传输到对应的Reduce节点。Reduce阶段每个Reduce任务接收属于自己的那一部分中间结果做汇总计算把最终结果写到HDFS上。这里我要多说一句Shuffle。很多调优问题都出在Shuffle上比如数据倾斜、网络传输开销大。Shuffle要经历分区、排序、溢写、合并、抓取、归并等一系列过程面试里“说说MapReduce的Shuffle机制”几乎是必考题一定要好好掌握。还有一个常见面试题是“MapReduce为什么不适合做实时计算”因为它是磁盘级别的批处理中间结果反复落盘一次计算可能花费数分钟甚至数小时而实时计算要求毫秒级响应两者天然不匹配。3.3 YARNHadoop的资源调度中枢YARN的出现是Hadoop历史上一次极其重要的架构升级。它把原来MapReduce自己管的那套资源调度逻辑独立出来形成了通用资源管理平台从此各种计算框架都能跑在Hadoop之上。YARN的核心组件包括以下几个ResourceManagerRM全局的老大管着集群里所有资源负责接收客户端的任务请求、分配资源、监控NodeManager的状态。NodeManagerNM每个节点上的小管家负责管理本节点的资源CPU、内存、磁盘启动和监控Container容器并向RM汇报本节点的状态。ApplicationMasterAM每个应用程序专属的“项目经理”负责向RM申请资源然后调度和监控自己这个应用内部的各个任务。整个执行流程可以这样理解客户端提交一个Application到RMRM找到一个合适的NodeManager让它在自己的节点上启动一个Container在这个Container里跑起ApplicationMasterAM启动后向RM申请后续计算所需的资源RM把资源以Container的形式分配给它AM把这些Container分给各个任务去执行并持续监控直到所有任务完成。跑在YARN上的框架有哪些除了MapReduce本身还有Spark、Flink、Tez等。你在热搜词里看到的“Hadoop Tez”其实就是Apache Tez——一个基于YARN的下一代计算引擎它比MapReduce更灵活避免了后者那种每个任务都要写一堆中间结果的低效方式Hive-on-Tez是高版本Hive默认的执行引擎之一。4. 从存储到分析Hadoop生态圈里那些绕不开的小伙伴很多新手学Hadoop时有个误区以为学完了HDFS和MapReduce就等于学会了Hadoop的全部。实际上Hadoop是一整个生态核心组件只是地基上面盖着各种专门用途的工具。我列一下学习Hadoop时最常接触到的几个生态组件按使用频率排序。Apache ZooKeeper分布式协调服务用来做Leader选举、配置管理、分布式锁等。HDFS的高可用、YARN的ResourceManager高可用都要靠它。你在热搜里看到“Hadoop和ZooKeeper整合实战”指的就是在生产环境里搭建HA集群时需要先部署ZooKeeper集群再让NameNode和ResourceManager都注册到ZooKeeper上实现自动故障转移。Apache Hive把SQL翻译成MapReduce或Tez、Spark程序的工具。不会写Java、不会写MapReduce没关系会用SQL就能查HDFS上的数据。Hive对非程序员极其友好是数据仓库场景的标配。Apache HBase一个分布式的、面向列的NoSQL数据库适合对海量数据进行随机的实时读写。注意区分HDFS不支持实时随机读写HBase支持。淘宝的订单交易数据、电商的用户行为记录很多都用HBase来存储。Apache Spark基于内存的分布式计算框架比MapReduce快得多目前已经是大数据处理的主流。严格来说Spark不是Hadoop的一部分但它可以跑在HDFS和YARN之上所以经常和大数据生态绑定在一起讨论。现在很多公司招“Hadoop工程师”实际工作内容是写Spark作业这点你要有心理准备。Sqoop / FlumeSqoop负责在HDFS和关系型数据库之间做数据导入导出Flume负责收集日志数据喂给HDFS。一个是“搬运工”一个是“水管工”都属于数据接入层。Ambari / Cloudera Manager管理平台部署和监控工具帮你一键安装、配置、监控整个集群。学习阶段不建议用因为它们会隐藏太多部署细节让你学完还是不会手动搭集群但工作以后公司里几乎都是靠这类工具管理集群的。还有一个概念你可能会在热搜里看到“基于Hadoop的交通信息分析系统的设计与实现”——这类课设项目的是典型的大数据综合应用。数据源可能是交通卡口或者GPS轨迹数据通过Flume或Sqoop采集进来存到HDFS上再用Hive或Spark做统计分析比如分时段的车流量、拥堵路段排名最后通过Web系统做可视化展示。这在学习路径上是一个很好的综合练手项目能把存储、计算、分析、展现全链路串起来。5. 部署模式怎么选单机、伪分布式、完全分布式的区别和适用场景5.1 三种部署模式一句话说清楚Hadoop支持三种部署模式很多教程一上来就让人装伪分布式但没解释清楚这三种模式的本质区别导致很多人装上之后还是一头雾水。本地模式单机模式所有组件跑在同一个Java进程里不使用HDFS直接读写本地文件系统。它主要用于开发和调试MapReduce程序速度最快但什么都看不到也学不到分布式相关知识。伪分布式模式在一台机器上以不同进程模拟完整的集群。也就是说NameNode、DataNode、ResourceManager、NodeManager全部在本机启动HDFS也是真实可用的。这是学习阶段使用最多的模式因为一台电脑就能完整体验Hadoop的工作流程。你搜“Hadoop伪分布式搭建”“Hadoop伪分布式安装”全网一搜一大把但很多人照着配完遇到各种奇怪问题根本原因是没理解这些配置项到底作用于哪个角色。完全分布式模式至少三台机器或三台虚拟机一台做Master两台做Slave每台机器上运行各自的角色进程。这才是真实的集群形态生产环境以及课设验收通常都要求这种模式。注意还有一种“高可用模式”本质上是在完全分布式的基础上增加NameNode的Active/Standby节点配合ZooKeeper实现故障自动切换。如果你需要搭一个像模像样的生产集群就需要研究“Hadoop和ZooKeeper整合实战”把HA架构部署出来。5.2 学习阶段怎么选从伪分布式开始但一定要懂集群配置我的建议是如果你是为了学原理第一遍用伪分布式模式跑通全流程然后尽快转到完全分布式模式。为什么因为很多坑只在完全分布式模式下才会暴露出来比如SSH免密登录、节点间时钟同步、防火墙端口设置、DataNode注册失败等。面试官问你“Hadoop集群搭建遇到过什么问题”你总不想回答“没有我只跑过伪分布式”吧。你在热搜里看到的“从零开始安装Hadoop”和“Hadoop安装与配置”大多讲的是伪分布式的步骤用来入门没问题但别停留在这一步。伪分布式模式下有四个核心配置文件你需要逐行看懂这也是很多教程一个配置文件就蒙混过去的地方core-site.xml配置HDFS的访问入口核心项是fs.defaultFS它决定了HDFS的NameNode地址和端口。比如hdfs://localhost:9000。hdfs-site.xml配置HDFS相关参数比如dfs.replication副本数伪分布式里必须设为1因为只有一个DataNode、以及NameNode和DataNode的存储目录。新版中还有dfs.namenode.name.dir和dfs.datanode.data.dir。mapred-site.xml配置MapReduce相关参数重点是mapreduce.framework.name设为yarn表示让MapReduce任务跑在YARN上。yarn-site.xml配置YARN相关参数重点是yarn.resourcemanager.hostname和yarn.nodemanager.aux-services。后面这项如果不设置为mapreduce_shuffle跑MapReduce任务时会报错报错信息往往是“ShuffleNotAvailableException”。这是新手最高频的报错之一。还有几个配置文件比如workers旧版叫slaves里面写着哪些节点是DataNodehadoop-env.sh里配置JAVA_HOME如果不设置的话启动集群时会报“JAVA_HOME is not set”之类的错误。这些配置的共同规律是每个角色启动时都会去读这些文件所以你改完配置必须重启对应进程否则不生效。5.3 家里电脑想练集群可以用Docker如果你只有一台电脑又想体验完全分布式怎么办答案是之前在热搜里看到的“Hadoop的Docker镜像”方案。用Docker在一台物理机上起三个容器分别扮演Master和Slave节点这样既隔离了环境又能模拟真实集群的网络拓扑。说实话我现在带人入门时都推荐先装好Docker然后拉一个现成的Hadoop镜像或者自己写Dockerfile构建一个因为这样比在虚拟机上装三台系统要轻量得多而且环境坏了随时可以重建不用心疼。用Docker搭Hadoop集群有几个小经验第一容器之间要能互相通信建议用--network自定义一个桥接网络让容器通过服务名互访第二容器启动时要把HDFS端口如9000、9870和YARN端口如8088映射到宿主机这样你才能在浏览器里看监控界面第三写Dockerfile时一定要把SSH配置好因为Hadoop集群启动时要通过SSH从Master免密登录到各Slave启动进程。这一步卡的初学者最多。6. Windows下开发环境怎么搭Idea调Hadoop的正确姿势如果你用的是Windows系统传统的做法是装个虚拟机或者WSL在里面跑Linux环境。但我观察到现在越来越多的教程在讲“Windows下使用IDEA搭建Hadoop开发环境”——这种方式适合什么场景呢是你已经有一个跑在Linux服务器或Docker容器里的Hadoop集群只是想用本地Windows的IDEA写代码、提交作业到集群上跑。这种“远程开发”模式非常常见也最推荐。在Windows上用IDEA写Hadoop程序有几个关键点必须处理好第一是本地环境变量和hosts配置。Windows端的IDEA要连接远程集群必须在C:\Windows\System32\drivers\etc\hosts里配上集群各节点的IP和主机名映射否则客户端解析不了namenode、datanode这些主机名。第二是Hadoop客户端依赖。Windows下跑Hadoop客户端代码需要与本集群版本一致的Hadoop客户端包还需要把hadoop.dll和winutils.exe这些Windows原生库放到一个目录下。程序一报Failed to locate the winutils binary就是缺这个。具体做法是下载对应版本的hadoop-winutils工具包配置好环境变量很多教程把这步当成“玄学”一笔带过其实它就是缺两个文件而已。第三是代码里的核心配置在IDEA里跑通“读取HDFS文件”或“提交WordCount”通常要在代码里显式设置fs.defaultFS和yarn.resourcemanager.hostname或者把集群的core-site.xml、hdfs-site.xml、yarn-site.xml放到classpath里。不建议用硬编码IP,因为以后换集群还得改代码直接把配置文件作为资源目录放进去更规范。Windows下遇到的最经典问题是本机运行代码时metrics或者文件系统操作报Permission denied。这时候通常不是因为集群拒绝了而是因为Windows用户名和Linux上的用户权限不匹配解决办法是在代码里设置HADOOP_USER_NAME环境变量System.setProperty(HADOOP_USER_NAME, hdfs)或者在代码连接HDFS时显式使用已经授权的用户身份。7. 新手学Hadoop最该避开的几个坑和面试核心考点学Hadoop的门槛不在于知识点本身难而在于坑实在太多。我把我带过无数小白踩过的坑集中列出来你可以直接用这份清单“排雷”。第一Java环境变量和Hadoop配置文件的坑永远排在第一位。很多报错看起来是Hadoop的问题实际上就是JAVA_HOME没配好或者HADOOP_HOME指错了目录。启动时看到Error: JAVA_HOME is not set and could not be found先冷静检查环境变量。第二改了配置不重启永远等于没配。core-site.xml、hdfs-site.xml这些文件在进程启动时读取一次运行中再改不会热生效。很多人在NameNode启动之后改了dfs.replication以为会立即对已有文件生效实际上只对后续新写入的文件生效。第三防火墙和端口问题在集群模式下是大坑。NameNode的9870端口3.x版本HTTP UI或50070端口2.x要用浏览器访问NodeManager的8042端口ResourceManager的8088端口都必须在防火墙上放行。很多人的集群“启动成功了”但从浏览器访问不了管理界面就是这个原因。第四DataNode启动失败但又没报什么错大概率是dfs.data.dir目录的属主不对或者tmp目录的权限问题。还有一种经典情况格式化NameNode时用了hdfs namenode -format但是DataNode的current目录还在两个节点的集群ID不一致DataNode注册不上。解决办法只有两个——要么删除DataNode目录重新初始化要么用hdfs namenode -initializeSharedEdits之类的工具去对齐集群ID但新手最稳妥的做法就是把集群彻底停掉清理数据目录重新格式化再启动。很多网上的教程都没提醒这一步所以你会看到大量求助帖评论区永远有人回复“兄弟你重新格式化一下就好了”。第五不要用root用户跑Hadoop也不要建一个带空格的用户目录。前者在某些发行版上会直接被拒绝启动后者会导致各种路径解析错误。面试里的核心考点除了前面提到的Shuffle流程、SecondaryNameNode的角色之外还有几个高频问题我建议你背熟HDFS的默认副本数是多少3Hadoop 3.x也还是默认3只是支持通过EC纠删码降低实际存储开销。为什么HDFS不适合存小文件因为每个文件、目录、Block都要在NameNode内存里建一条元数据记录小文件太多会耗尽NameNode内存导致整个集群性能下降。MapReduce的默认输入分片怎么计算按FileInputFormat的maxSplitSize等参数决定通常一个Block对应一个分片也就是说128MB的块生成一个Map任务。YARN的调度器有哪几种有FIFO Scheduler、Capacity Scheduler、Fair Scheduler三种生产环境默认用的是Capacity Scheduler。Hadoop 3.x相比2.x有什么主要变化多了纠删码、支持了NameNode联邦、优化了MR性能、还把最低Java版本提到了8。这些考点不只要会背还要能解释清楚为什么。面试官问“为什么HDFS不适合存小文件”你如果只回答“会占NameNode内存”这只是及格分你能补一句“NameNode的元数据全部常驻内存所以内存大小决定了整个集群能容纳的文件总数上限”并且能估算一下平均一个文件大约占150字节的元数据1GB内存实际能支持的文件数大约就是600万到700万这就是高分回答。8. 一条关于实操学习的建议从明天开始做什么学Hadoop最忌讳的就是“收藏了就是学会了”。根据我带人的经验最好按照下面这条路线往下走每一步都动手敲一遍。第一去官网下载Hadoop 3.3.x的二进制包先在Linux环境本机虚拟机或云服务器都行跑通伪分布式。严格按照官方文档配置四个xml文件启动成功后在浏览器里打开NameNode和ResourceManager的Web UI实在不行先看“从零开始Hadoop安装和配置”这类图文教程但要跟着自己敲不要复制粘贴。第二跑通WordCount例子。先跑自带的示例jar包再自己在IDEA里写一遍提交到集群上。这个过程中你会遇到各种ClassNotFound、权限、资源不足的报错每一个都值得排查一遍那是进步最快的时候。第三在伪分布式基础上用两台或三台虚拟机或者Docker容器搭建完全分布式集群。把SSH免密登录、时间同步、防火墙配置全部踩一遍这个过程会让你真正理解分布式环境下的协作机制。第四把Hive装上去用SQL查HDFS上的数据。你会发现Hive的安装又有一堆坑但只要你前面的Hadoop环境是手动搭的遇到Hive的问题你就能很自然地联想到是不是HDFS权限问题、是不是元数据库没启动。第五选一个综合实战项目练手。比如热搜里提到的“基于Hadoop的交通信息分析系统”这类项目的完整链路是数据采集Flume/Sqoop→ 数据落地HDFS→ 数据计算Hive/Spark→ 数据展示Web可视化。你不需要真的实现一个生产系统能在课程设计或者个人项目里把这一条链路跑通你对Hadoop的理解就已经超过大部分把“Hello World”写完就放弃的学习者了。我现在带人的实际体验是动手搭一次完全分布式集群胜过看十遍架构文档跑通一次WordCount胜过背二十个面试题。如果你能坚持到这五步下一节内容我们就可以直接上手搭环境了。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门