gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

分类归档Hadoop

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  大数据开发
  • 分类归档: "Hadoop"
Hadoop 9月 26,2024

hadoop切片原理机制详解

Hadoop的切片机制(也称为分片)是MapReduce作业中数据处理的基础。它将输入数据分成多个切片(或片段),每个切片由一个或多个数据块组成。这种机制有助于并行处理,提高了数据处理的效率。

原理

  1. 输入格式:Hadoop支持多种输入格式(如TextInputFormat、SequenceFileInputFormat等)。输入格式负责定义如何读取输入数据,并将其分割成切片。
  2. 切片的创建:切片的创建通常发生在输入格式类的getSplits()方法中。这个方法根据输入数据的大小和块的数量来决定切片的数量。Hadoop会考虑HDFS的块大小,通常为128MB或256MB。
  3. 切片与任务:每个切片对应一个Map任务。Hadoop会为每个切片分配一个Map任务,以并行处理数据。这个过程提高了作业的吞吐量和资源利用率。
  4. 切片的特性:
    • 切片大小:Hadoop会根据配置的块大小和数据的特性来决定切片大小。切片可以小于或等于块大小,但一般不建议超过块大小,以保持任务的并行性。
    • 切片的重用:如果一个作业对数据进行了切片处理,后续作业可以重用这些切片,以避免重复的I/O操作。

实现细节

  1. 自定义输入格式:开发者可以实现自定义的输入格式类,继承InputFormat,并重写getSplits()和createRecordReader()方法,以适应特定的输入数据格式和切片需求。
  2. RecordReader:在Map任务中,RecordReader将切片中的数据读取为键值对,以供Mapper处理。不同的输入格式会有不同的RecordReader实现。
  3. 容错机制:Hadoop的切片机制还考虑到了容错。当一个Map任务失败时,Hadoop会自动重试该任务或将其分配给其他节点。这种机制保证了数据处理的可靠性。
  4. Combiner:在某些情况下,可以使用Combiner对Map输出的数据进行局部汇总,以减少后续Reduce阶段的负载。Combiner在每个Mapper输出之前进行,通常是对相同key的值进行合并。

切片的优化

  • 切片大小调整:根据数据特性和集群资源,可以调整切片的大小。小切片可能导致任务调度开销增加,而大切片可能会降低并行性。
  • 使用合理的输入格式:选择合适的输入格式,确保数据能被有效地分片和读取。
作者 east
Hadoop 9月 23,2024

HDFS HA中的JournalNode集群有什么作用?

HDFS HA(High Availability)模式下,JournalNode集群扮演着至关重要的角色。在这种配置中,NameNode的主备切换不再依赖共享存储,而是通过Zookeeper协调多个Active NameNode之间的状态同步。JournalNode集群负责维护这些NameNode的编辑日志(Edit Logs),确保数据的一致性和高可用性。

JournalNode集群的主要作用

  1. 日志复制与持久化:JournalNode集群接收来自主NameNode的编辑日志,并将其复制到所有其他JournalNodes上,实现日志的高可用性。即使部分JournalNode失败,只要半数以上的节点存活,就能保证编辑日志的完整性。
  2. 支持快速故障转移:在主NameNode发生故障时,备用NameNode可以利用保存在JournalNode集群中的编辑日志迅速接管,减少服务中断时间。
  3. 避免单点故障:通过分布式的JournalNode集群,HDFS避免了依赖单一共享存储系统的风险,提高了整个文件系统的可靠性。
  4. 简化管理:管理员无需担心共享存储的复杂配置和潜在瓶颈,JournalNode集群的管理相对简单,易于扩展。

JournalNode集群的设计是HDFS实现高可用性的关键组成部分,它通过分布式日志记录和复制机制,确保了Hadoop文件系统在面对硬件故障时能够持续稳定地运行。

作者 east
Hadoop 9月 23,2024

HDFS HA中的ZKFC组件具体是如何工作的?

HDFS高可用性(HA)架构中,ZooKeeper Failover Controller(ZKFC)负责管理NameNode的故障转移。ZKFC通过与ZooKeeper集群交互来监控Active NameNode的状态,并在检测到Active NameNode失败时协调Standby NameNode的接管过程。

ZKFC的工作流程如下:

  1. 初始化和注册:ZKFC启动时,它会在ZooKeeper中创建特定的节点来表示自己的存在,并订阅Active NameNode的Z节点,以便接收其健康状态更新。
  2. 状态监控:ZKFC持续监控Active NameNode在ZooKeeper中的状态。如果Active NameNode正常运行,它会定期向ZooKeeper发送心跳信号。
  3. 故障检测:如果ZKFC在预定时间内未收到Active NameNode的心跳信号,它会认为Active NameNode已经失败。
  4. 故障转移协调:一旦检测到Active NameNode失败,ZKFC会在ZooKeeper中修改状态,触发故障转移流程。它会确保所有的FailoverControllers达成一致,然后指导Standby NameNode完成启动过程,成为新的Active NameNode。
  5. 客户端重定向:ZKFC还负责通知客户端关于新Active NameNode的信息,确保客户端能够连接到新的主NameNode上继续操作。

通过这种机制,ZKFC确保了HDFS集群在Active NameNode发生故障时能够迅速恢复服务,从而提高了整个文件系统的可用性和可靠性。

作者 east
bug清单, Hadoop 7月 25,2023

Transport-level exception trying to monitor health of NameNode at xxx: java.net.SocketTimeoutException: 45000 millis timeout while waiting for the channel to be ready for read

表明CDH 6.3.2中的某个组件(可能是其他节点的Datanode或NodeManager)在尝试监视位于CDH节点上的NameNode时,发生了Socket超时异常。这意味着在连接到NameNode时花费的时间超过了45秒,导致连接失败。

可能的原因:

  1. 网络问题:有可能是网络连接不稳定或者网络延迟导致连接超时。
  2. 资源不足:CDH的NameNode可能资源不足,导致响应变慢,从而引发超时异常。
  3. 防火墙或安全设置:防火墙或其他安全设置可能限制了节点之间的通信,导致连接超时。

解决方案:

针对上述可能的原因,可以采取以下步骤逐一排查和解决问题:

  1. 检查网络连接:确保所有节点之间的网络连接稳定,并且没有阻止节点之间通信的防火墙或其他网络限制。
  2. 检查资源:确认CDH上的NameNode是否具有足够的资源(CPU、内存、磁盘空间等)来处理请求。如果资源不足,可以考虑增加资源或优化配置。
  3. 检查防火墙和安全设置:确保防火墙或其他安全设置不会阻止节点之间的通信。可以检查防火墙规则和CDH安全配置。
  4. 检查NameNode日志:查看CDH上NameNode的日志,了解是否存在其他异常或错误信息,这可能有助于进一步定位问题。
  5. 调整超时时间:可以尝试增加超时时间,从而允许更长的连接时间。但这并不是根本解决问题的方法,只是一个临时调整。
  6. 更新或升级:如果发现该问题是由于已知的CDH或Hadoop bug引起的,可以尝试升级CDH版本或应用相关的补丁和更新。
  7. 联系支持:如果上述步骤无法解决问题,可以联系CDH或Hadoop的支持团队寻求进一步的帮助和调查。
作者 east
bug清单, Hadoop 7月 25,2023

CDH节点报“Role not started due to unhealthy host”,重启不了角色

CDH集群的 Datanode 挂掉了,要重新启动报错“Role not started due to unhealthy host”。查了一下,这表示主机处于不健康状态 。这个错误大概有下面的原因:

可能的原因:

  1. 主机故障:Datanode所在的主机可能存在硬件故障或者网络问题,导致主机处于不可用状态,从而Datanode无法正常启动。
  2. 资源不足:主机资源(例如CPU、内存、磁盘空间)不足,导致Datanode启动失败。
  3. 防火墙或安全设置:防火墙或其他安全设置可能会阻止Datanode与其他节点进行通信,导致启动失败。
  4. CDH组件问题:CDH组件可能出现问题,导致Datanode无法启动。

解决方案:

针对上述可能的原因,可以采取以下步骤逐一排查和解决问题:

  1. 检查主机状态:确保Datanode所在的主机处于健康状态,没有硬件故障或网络问题。可以通过运行系统命令或者在CDH管理界面查看主机状态。
  2. 检查资源:确认主机具有足够的资源(CPU、内存、磁盘空间等)来运行Datanode。如果资源不足,可以考虑升级主机或释放资源。
  3. 检查防火墙和安全设置:确保防火墙或其他安全设置不会阻止Datanode与其他节点进行通信。可以检查防火墙规则和CDH安全设置。
  4. 检查CDH组件状态:检查CDH的其他组件是否正常运行,特别是与Datanode相关的组件(如HDFS)。如果其他组件也出现问题,可能是由于CDH整体环境的故障。
  5. 查看日志:检查Datanode日志,通常在CDH的日志目录下,查看是否有相关错误信息提供更多线索。
  6. 重启服务:尝试重启Datanode服务,以便它重新连接到集群并解决任何临时问题。
  7. 联系支持:如果上述步骤无法解决问题,可以联系CDH或Hadoop支持团队寻求帮助。

后来还发现奇怪现象,jps查到datanode、namenode进程想要kill掉,一直kill不掉。经过排查,发现是服务器多块硬盘中其中一块坏了,导致CDH一直报
“Role not started due to unhealthy host ”。

作者 east
Hadoop, Hive 6月 24,2022

idea远程连接hadoop、hive操作权限不够问题解决

使用idea远程操作hive,进行写数据时提示权限不够:

Permission denied: user=test, access=WRITE, inode=”/data/warehouse/db1/dws/dws_test1″:hdfs:supergroup:drwxr-xr-x

要解决这类问题,最方便方法是hdfs设置HADOOP_USER_NAME,这样远程访问就用指定的名来访问。( 如果是CDH安装的,超级用户hdfs )有几类操作方法:

方法一
打开要设置类文件的Configurations

第二步name中写自己的用户名称就行

再重新运行java文件就可以了

方法二
在java文件中进行设置
FileSystem fs= FileSystem.get(new URI(“hdfs://cdh01:9000”),conf,“hdfs”);

方法三

设置windows环境变量

作者 east
Hadoop 4月 4,2022

Hadoop对比SQL,哪个更适合数据管理

Hadoop 与 SQL 之间的主要区别:

架构:Hadoop 是一个开源框架(或“生态系统”),它在计算机/服务器集群之间分布数据集并并行处理数据。 SQL 是一种特定领域的编程语言,用于处理关系数据库中的数据。


数据:Hadoop 一次写入数据; SQL 多次写入数据。 (Hadoop 和 SQL 多次读取数据。)


技能水平:Hadoop 比 SQL 更难学。 (但是,两者都需要代码知识。)


价格:Hadoop 和 SQL 是开源的并且可以免费使用。 但是,两者都会产生额外的设置和维护成本。


评论:Hadoop 在软件评论网站 G2.com 上的客户评分为 4.3/5。 因为 SQL 是一种编程语言,而不是作为“产品”提供,所以它在 G2 上没有得分。

组织依靠大数据为其业务提供动力,但许多团队都在为数据管理的复杂性而苦苦挣扎。 值得庆幸的是,Hadoop 和 SQL 更有效地处理大型数据集。 这些工具以独特的方式管理数据,这使得我们很难在同类的基础上比较它们。 但是,希望简化其技术堆栈的组织可能有理由选择其中一个。

在本文中,我们根据几个因素比较了 Hadoop 与 SQL,包括功能和客户评论分数。

什么是 Hadoop?
Apache Hadoop 是一个开源工具生态系统,可将数据集存储在分布式系统中并解决各种数据管理问题。

Hadoop 由四个组件组成:MapReduce、Yarn、库,以及最终在现成硬件上运行的 Hadoop 分布式文件系统 (HDFS)。 Hadoop 处理各种数据集,使其成为希望从大量来源生成有价值数据洞察的组织的绝佳选择。它有利于处理大量数据。

Hadoop 对跨计算机和服务器集群的数据集进行分布式处理。它以并行方式处理数据,因此它可以同时在多台机器上工作。 HDFS 存储提交的数据,MapReduce 处理数据,Yarn 划分数据管理任务。

世界上一些最成功的技术组织都使用 Hadoop,包括 IBM、Pivo​​tal Software、Hadapt 和 Amazon Web Services。

什么是 SQL?
结构化查询语言 (SQL) 是一种开源的特定于领域的编程语言,用于在 Oracle、SQL Server 或 MySQL 等关系数据库管理系统 (RDMS) 中进行数据管理和处理数据流。 SQL 由 Oracle 开发,是一种用于分析查询的声明性语言。

有关我们的原生 SQL 连接器的更多信息,请访问我们的集成页面。

Hadoop 与 SQL:有什么区别?
也许 Hadoop 和 SQL 之间最大的区别在于这些工具管理和集成数据的方式。 SQL 只能处理有限的数据集,例如关系数据,并且难以处理更复杂的数据集。 Hadoop 可以处理大型数据集和非结构化数据。

当然,还有很多其他的区别:

Hadoop 线性扩展; SQL 是非线性的。
Hadoop的完整性低; SQL 是高完整性的。
Hadoop只能写一次; SQL 多次写入。
Hadoop具有动态模式结构; SQL 具有静态模式结构。
Hadoop 支持批处理(通过 HDFS); SQL 没有。
Hadoop 比 SQL 更难学习,但更容易扩展。您可以轻松地将数据节点添加到 Hadoop 集群。
您选择的工具取决于您要管理的数据集。如果您需要处理大量数据,请选择 Hadoop。如果您不想要高级数据管理的复杂性,请选择 SQL。

作者 east
Hadoop, Spark 3月 23,2022

企业生产环境考虑:Spark 全方位对比 Hadoop MapReduce

Apache Spark 与 Hadoop MapReduce 的五个主要区别:
1、Apache Spark 可能比 Hadoop MapReduce 快 100 倍。
2、Apache Spark 使用 内存,并且不依赖于 Hadoop 的两阶段范式。
3、Apache Spark 适用于可以全部放入服务器 内存 的较小数据集。
4、Hadoop 处理海量数据集更具成本效益。
5、Apache Spark 现在比 Hadoop MapReduce 更受欢迎。
多年来,Hadoop 一直是大数据无可争议的首选——直到 Spark 出现。自 2014 年首次发布以来,Apache Spark 一直在点燃大数据世界。凭借 Spark 便捷的 API 和承诺的速度比 Hadoop MapReduce 快 100 倍,一些分析人士认为,Spark 标志着大数据新时代的到来。

Spark 是一个开源数据处理框架,如何能够如此快速地处理所有这些信息?秘诀在于 Spark 在集群上运行在内存中,它不依赖于 Hadoop 的 MapReduce 两阶段范式。这使得重复访问相同数据的速度更快。 Spark 可以作为独立应用程序运行,也可以在 Hadoop YARN 之上运行,它可以直接从 HDFS 读取数据。雅虎、英特尔、百度、Yelp 和 Zillow 等数十家主要科技公司已经将 Spark 作为其技术堆栈的一部分。

虽然 Spark 似乎注定要取代 Hadoop MapReduce,但您现在还不应该指望 MapReduce。在这篇文章中,我们将比较这两个平台,看看 Spark 是否真的非常有优势。

什么是 Apache Spark?
Apache Spark 是“用于大规模数据处理的统一分析引擎”。 Spark 由非营利性的 Apache Software Foundation 维护,该基金会已经发布了数百个开源软件项目。自项目启动以来,已有 1200 多名开发人员为 Spark 做出了贡献。

Spark 最初是在加州大学伯克利分校的 AMPLab 开发的,于 2010 年首次作为开源项目发布。Spark 使用 Hadoop MapReduce 分布式计算框架作为其基础。 Spark 旨在改进 MapReduce 项目的几个方面,例如性能和易用性,同时保留 MapReduce 的许多优点。

Spark 包括一个核心数据处理引擎,以及用于 SQL、机器学习和流处理的库。凭借适用于 Java、Scala、Python 和 R 的 API,Spark 在开发人员中享有广泛的吸引力——为其赢得了大数据处理领域“瑞士军刀”的美誉。

什么是 Hadoop MapReduce?
Hadoop MapReduce 将自己描述为“一个用于轻松编写应用程序的软件框架,该应用程序以可靠、容错的方式在大型商用硬件集群(数千个节点)上并行处理大量数据(多 TB 数据集)。”

MapReduce 范式由两个顺序任务组成:Map 和 Reduce(因此得名)。 Map 过滤和排序数据,同时将其转换为键值对。然后,Reduce 接受此输入并通过对数据集执行某种汇总操作来减小其大小。

MapReduce 可以通过分解大型数据集并并行处理它们来极大地加速大数据任务。 MapReduce 范式由 Google 员工 Jeff Dean 和 Sanjay Ghemawat 于 2004 年首次提出;后来它被整合到 Apache 的 Hadoop 框架中以进行分布式处理。

Spark 和 MapReduce 的区别
Apache Spark 和 Hadoop MapReduce 之间的主要区别是:

>性能
>易于使用
>数据处理
>安全
然而,Spark 和 MapReduce 之间也有一些相似之处——这并不奇怪,因为 Spark 使用 MapReduce 作为其基础。 Spark 和 MapReduce 的相似点包括:

>成本
>兼容性
>容错
下面,我们将在每个部分详细介绍 Spark 和 MapReduce 之间的差异(以及相似之处)。

Spark VS MapReduce:性能
Apache Spark 在随机存取存储器 (RAM) 中处理数据,而 Hadoop MapReduce 在执行映射或归约操作后将数据持久化回磁盘。那么理论上,Spark 的性能应该优于 Hadoop MapReduce。尽管如此,Spark 需要大量内存。与标准数据库非常相似,Spark 将进程加载到内存中并保留在那里,直到进一步通知以进行缓存。如果您在 Hadoop YARN 上运行 Spark 和其他需要资源的服务,或者如果数据太大而无法完全放入内存,那么 Spark 可能会遭受严重的性能下降。

MapReduce 会在作业完成后立即终止其进程,因此它可以轻松地与性能差异很小的其他服务一起运行。

对于需要多次传递相同数据的迭代计算,Spark 具有优势。但是,当涉及到类似 ETL 的一次性作业时——例如,数据转换或数据集成——这正是 MapReduce 的设计目的。

小结:当所有数据都适合内存时,Spark 性能更好,尤其是在专用集群上。 Hadoop MapReduce 专为无法放入内存的数据而设计,并且可以与其他服务一起很好地运行。

Spark VS Hadoop MapReduce:易用性
Spark 为 Java、Scala 和 Python 提供了预构建的 API,还包括用于 SQL 的 Spark SQL(以前称为 Shark)。由于 Spark 的简单构建块,编写用户定义的函数很容易。 Spark 甚至包括用于运行命令并立即反馈的交互模式。

MapReduce 是用 Java 编写的,并且非常难以编程。 Apache Pig 让它变得更容易(尽管它需要一些时间来学习语法),而 Apache Hive 则增加了 SQL 兼容性。一些 Hadoop 工具也可以在没有任何编程的情况下运行 MapReduce 作业。

此外,虽然 Hive 包含命令行界面,但 MapReduce 没有交互模式。 Apache Impala 和 Apache Tez 等项目希望将完整的交互式查询引入 Hadoop。

在安装和维护方面,Spark 不受 Hadoop 的约束。 Spark 和 Hadoop MapReduce 都包含在 Hortonworks (HDP 3.1) 和 Cloudera (CDH 5.13) 的发行版中。

小结:Spark 更易于编程,并且包含交互模式。 Hadoop MapReduce 更难编程,但有几个工具可以使它更容易。

Spark VS Hadoop MapReduce:成本
Spark 和 MapReduce 是开源解决方案,但您仍然需要在机器和人员上花钱。 Spark 和 MapReduce 都可以使用商品服务器并在云上运行。此外,这两种工具都有相似的硬件要求:


Spark 集群中的内存至少应该与您需要处理的数据量一样大,因为数据必须适合内存才能获得最佳性能。如果您需要处理大量数据,Hadoop 肯定是更便宜的选择,因为硬盘空间比内存空间便宜得多。

另一方面,考虑到 Spark 和 MapReduce 的性能,Spark 应该更划算。 Spark 需要更少的硬件来更快地执行相同的任务,尤其是在计算能力按使用付费的云服务器上。

人员配备问题呢?尽管 Hadoop 自 2005 年就已经存在,但市场上仍然缺乏 MapReduce 专家。根据 Gartner 的一份研究报告,57% 的使用 Hadoop 的组织表示“获得必要的技能和能力”是他们最大的 Hadoop 挑战。

那么这对于自 2010 年才出现的 Spark 来说意味着什么呢?虽然它可能有更快的学习曲线,但 Spark 也缺乏合格的专家。好消息是,有大量 Hadoop 即服务产品和基于 Hadoop 的服务(如 Integrate.io 自己的数据集成服务),这有助于缓解这些硬件和人员配备要求。同时,Spark 即服务选项可通过 Amazon Web Services 等提供商获得。

小结:根据基准,Spark 更具成本效益,但人员配备成本可能更高。 Hadoop MapReduce 可能会更便宜,因为可用的人员更多,而且对于海量数据量来说可能更便宜。

Spark VS Hadoop MapReduce:兼容性
Apache Spark 可以作为独立应用程序在 Hadoop YARN 或 Apache Mesos 内部部署或云中运行。 Spark 支持实现 Hadoop 输入格式的数据源,因此它可以与 Hadoop 支持的所有相同数据源和文件格式集成。

Spark 还通过 JDBC 和 ODBC 与商业智能工具一起工作。

底线:Spark 对各种数据类型和数据源的兼容性与 Hadoop MapReduce 相同。

Spark vs Hadoop MapReduce:数据处理
Spark 可以做的不仅仅是简单的数据处理:它还可以处理图形,它包括 MLlib 机器学习库。由于其高性能,Spark 可以进行实时处理和批处理。 Spark 提供了一个“一刀切”的平台供您使用,而不是在不同的平台上拆分任务,这会增加您的 IT 复杂性。

Hadoop MapReduce 非常适合批处理。如果你想要一个实时选项,你需要使用另一个平台,比如 Impala 或 Apache Storm,而对于图形处理,你可以使用 Apache Giraph。 MapReduce 曾经有 Apache Mahout 用于机器学习,但后来被 Spark 和 H2O 抛弃了。

小结:Spark 是数据处理的瑞士军刀,而 Hadoop MapReduce 是批处理的突击刀。

Spark vs Hadoop MapReduce:容错
Spark 具有每个任务的重试和推测执行,就像 MapReduce 一样。尽管如此,MapReduce 在这里有一点优势,因为它依赖于硬盘驱动器,而不是 RAM。如果 MapReduce 进程在执行过程中崩溃,它可以从中断的地方继续,而 Spark 必须从头开始处理。

小结:Spark 和 Hadoop MapReduce 都具有良好的容错性,但 Hadoop MapReduce 的容错性稍强一些。

Spark VS Hadoop MapReduce:安全性
在安全性方面,与 MapReduce 相比,Spark 没有那么先进。事实上,Spark 中的安全性默认设置为“关闭”,这会使您容易受到攻击。 RPC 通道支持通过共享密钥在 Spark 中进行身份验证。 Spark 将事件日志记录作为一项功能,并且可以通过 javax servlet 过滤器保护 Web UI。此外,由于 Spark 可以运行在 YARN 上并使用 HDFS,因此还可以享受 Kerberos 身份验证、HDFS 文件权限以及节点之间的加密。

Hadoop MapReduce 可以享受所有 Hadoop 安全优势并与 Hadoop 安全项目集成,例如 Knox Gateway 和 Apache Sentry。旨在提高 Hadoop 安全性的 Project Rhino 仅在添加 Sentry 支持方面提到了 Spark。否则,Spark 开发人员将不得不自己提高 Spark 的安全性。

小结:与具有更多安全功能和项目的 MapReduce 相比,Spark 安全性仍然欠发达。

Spark 的常用场景
虽然两者都是大规模数据处理的强大选项,但某些情况下,其中一种比另一种更理想。

流数据处理
随着公司走向数字化转型,他们正在寻找实时分析数据的方法。 Spark 的内存数据处理使其成为处理流数据的理想选择。 Spark Streaming 是 Spark 的一个变体,它使这个用例成为可能。那么,公司可以通过哪些方式利用 Spark Streaming?

流式 ETL – 在传统的 ETL 过程中,数据被读取、转换为兼容格式并保存到目标数据存储中。使用 Streaming ETL 的过程效率更高,因为数据在保存到目标数据存储之前会在内存中不断清理和聚合。

数据丰富——公司在尝试适应和提供更增强的客户体验时处于不断变化的状态。通过将实时数据与静态数据相结合,公司可以构建更可靠的客户画像,从而为他们提供个性化体验。

触发事件检测——实时响应事件的能力是一项重要的业务能力,有助于提高敏捷性和适应变化的能力。借助 Spark Streaming,公司可以实时分析数据,以识别需要立即关注的异常活动。

机器学习
在预测分析方面,Spark 的机器学习库 (MLib) 提供了一套强大的工具,可以轻松完成它。当用户对一组数据进行重复查询时,他们本质上是在构建类似于机器学习的算法。例如,机器学习可以帮助公司出于营销目的进行客户细分。它还可以帮助执行情绪分析。

交互式查询
想象一下能够对实时数据执行交互式查询。从本质上讲,您可以分析大型数据集,而无需依赖外部数据存储来处理信息。使用 Spark Streaming,您可以查询数据流,而无需将其持久化到外部数据库。

MapReduce 的常用场景
当处理对于内存中操作来说太大的数据时,MapReduce 是要走的路。因此,MapReduce 最适合处理大型数据集。

处理大型数据集(PB或TB)
考虑到实施和维护所需的时间和费用,千兆字节大小不足以证明 MapReduce 的合理性。希望管理PB或TB数据的组织是 MapReduce 的理想选择。

以不同格式存储数据
公司可以使用 MapReduce 处理多种文件类型,例如文本、图像、纯文本等。由于这些文件对于内存中的处理来说太大了,使用 MapReduce 进行批处理更经济。

数据处理
MapReduce 具有对大型数据集执行基本和复杂分析的强大功能。通过使用基于磁盘的存储而不是内存中的处理,对大型数据集进行汇总、过滤和连接等任务的效率要高得多。

Spark 与 Hadoop MapReduce 趋势

随着公司寻找在拥挤的市场中保持竞争力的新方法,他们将需要适应即将到来的数据管理趋势。这些趋势包括:

XOps – 使用 DevOps 的最佳实践,XOps 的目标是在数据管理过程中实现可靠性、可重用性和可重复性。

Data Fabric – 作为一个架构框架,Data Fabric 的目标是在一个无缝的数据管理平台中结合多种类型的数据存储、分析、处理和安全性

数据分析作为核心业务功能 – 传统上,数据管理由一个单独的团队处理,该团队分析数据并将其提供给关键业务领导者。然而,一种新方法将这些数据直接交到组织领导者手中,这样他们就可以立即访问这些信息以进行决策。

结论
Apache Spark 可能比 Hadoop MapReduce 快 100 倍。
Apache Spark 使用 RAM,并且不依赖于 Hadoop 的两阶段范式。
Apache Spark 适用于可以全部放入服务器 RAM 的较小数据集。
Hadoop 处理海量数据集更具成本效益。
Apache Spark 现在比 Hadoop MapReduce 更受欢迎。
Apache Spark 是大数据平台上闪亮的新玩具,但仍有使用 Hadoop MapReduce 的用例。无论您选择 Apache Spark 还是 Hadoop MapReduce,

Spark具有出色的性能,并且具有很高的成本效益,这得益于其内存数据处理。它与 Hadoop 的所有数据源和文件格式兼容,并且学习曲线更快,并具有可用于多种编程语言的友好 API。 Spark 甚至包括图形处理和机器学习功能。

Hadoop MapReduce 是一个更成熟的平台,它是专门为批处理而构建的。对于无法放入内存的超大数据,MapReduce 比 Spark 更具成本效益,而且可能更容易找到具有 MapReduce 经验的员工。此外,由于许多支持项目、工具和云服务,MapReduce 生态系统目前更大。

但即使你认为 Spark 看起来像这里的赢家,你也很可能不会单独使用它。您仍然需要 HDFS 来存储数据,并且您可能想要使用 HBase、Hive、Pig、Impala 或其他 Hadoop 项目。这意味着您仍然需要与 Spark 一起运行 Hadoop 和 MapReduce 以获得完整的大数据包。

作者 east
bug清单, Hadoop 4月 24,2020

namenode 日志提示 storage directory does not exist or is not accessible

移植hadoop到另一台机器,启动hadoop时,发现namenode没启动起来。检查配置文件没问题,ssh又免登录了,于是删除hadoop几个临时文件夹,重新格式化,果然就正常了。

作者 east
bug清单, Hadoop 3月 2,2020

hadoop DataNode服务无法启动解决(报java.net.BindException:地址已在使用)

启动DataNode服务后马上又Shutdown, 在操作系统没看到有DataNode的日志(可能是服务启动失败, 自动删除了日志文件),幸好在界面上可以查看报错的日志:

 点开报错信息, 可以看到如下信息:

 HDFS的端口为50010, 但是使用netstat -ntulp | grep 50010查看不到此端口。

分析:

原因:当应用程序崩溃后, 它会留下一个滞留的socket,以便能够提前重用socket, 当尝试绑定socket并重用它,你需要将socket的flag设置为SO_REUSEADDR,但是HDFS不是这么做的。解决办法是使用设置SO_REUSEADDR的应用程序绑定到这个端口, 然后停止这个应用程序。可以使用netcat工具实现。解决办法: 安装nc工具, 使用nc工具占用50010端口, 然后关闭nc服务, 再次启动DataNode后正常。

参考链接:http://www.nosql.se/2013/10/hadoop-hdfs-datanode-java-net-bindexception-address-already-in-use/参考文字:

    After an application crashes it might leave a lingering socket, so to reuse that socket early you need to set the socket flag SO_REUSEADDR when attempting to bind to it to be allowed to reuse it. The HDFS datanode doesn’t do that, and I didn’t want to restart the HBase regionserver (which was locking the socket with a connection it hadn’t realized was dead).The solution was to bind to the port with an application that sets SO_REUSEADDR andthen stop that application, I used netcat for that:# nc -l 50010

2017-02-17 20:54:52,250 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Shutdown complete.2017-02-17 20:54:52,251 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMainjava.net.BindException: Address already in use	at sun.nio.ch.Net.bind0(Native Method)	at sun.nio.ch.Net.bind(Net.java:444)	at sun.nio.ch.Net.bind(Net.java:436)	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)	at com.cloudera.io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:125)	at com.cloudera.io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:475)	at com.cloudera.io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1021)	at com.cloudera.io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:455)	at com.cloudera.io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:440)	at com.cloudera.io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:844)	at com.cloudera.io.netty.channel.AbstractChannel.bind(AbstractChannel.java:194)	at com.cloudera.io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:340)	at com.cloudera.io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380)	at com.cloudera.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)	at com.cloudera.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)	at com.cloudera.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)	at java.lang.Thread.run(Thread.java:745)2017-02-17 20:54:52,262 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 12017-02-17 20:54:52,264 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: /************************************************************SHUTDOWN_MSG: Shutting down DataNode at cdh1/192.168.5.78
作者 east
bug清单, Hadoop 3月 2,2020

一个启动不了namenode的诡异问题

安装好hadoop后,访问ip:50070,发现只显示NateNode on ip:50070,在终端输入 jps,也没有发现namenode进程。

在百度上各种抓狂,修改host,修改配置文件,删除创建临时文件,重新格式化,还是没有作用。

发现shell执行start-all.sh 提示:

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

于是联想到配置ssh免密时是否操作有问题,发现/root/.ssh多了一个
known_hosts文件,于是删除重新启动,果然好了

作者 east
Hadoop 2月 12,2019

yarn权限问题

① YARN 执行作业遇到 Unauthorized request to start container 问题:

datanode 与 namenode 之间未设置时间同步,所以引起该异常。解决方案:多个 datanode 与 namenode 进行时间同步。

②HDFS 客户端的权限错误:Permission denied

1、在系统的环境变量或 Java JVM 变量里面添加HADOOP_USER_NAME,这个值具体等于多少看自己的情况,以后会运行 Hadoop 上的 Linux 的用户名。(修改完重启 eclipse,不然可能不生效)

2、将当前系统的帐号修改为 hadoop

3、使用 HDFS 的命令行接口修改相应目录的权限,hadoop fs -chmod 777 /user,后面的/user 是要上传文件的路径,不同的情况可能不一样,比如要上传的文件路径为hdfs://namenode/user/xxx.doc,则这样的修改可以,如果要上传的文件路径为hdfs://namenode/Java/xxx.doc,则要修改的为 hadoop fs -chmod 777 /java 或者 hadoop fs – chmod 777 /,java 的那个需要先在 HDFS 里面建立 Java 目录,后面的这个是为根目录调整权限。

推荐第一种

作者 east

1 2 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?
  • C++ 中避免悬挂引用的企业策略有哪些?
  • 嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
  • C++如何在插件式架构中使用反射实现模块隔离?
  • C++如何追踪内存泄漏(valgrind/ASan等)并定位到业务代码?
  • C++大型系统中如何组织头文件和依赖树?

文章归档

  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (43)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (4)
  • 大数据开发 (488)
    • CDH (6)
    • datax (4)
    • doris (30)
    • Elasticsearch (15)
    • Flink (78)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (40)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (99)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (34)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (70)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (6)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.