1. Hadoop1.1. Hadoop是一个开源框架由Apache基金会于2005年创建1.2. 旨在利用分布式计算的力量1.3. 各种工具和库扩展了Hadoop的功能使其成为处理大量数据并寻求具有成本效益的可扩展性组织的流行选择1.4. Hadoop分布式文件系统(HDFS)能够通过将数据分割成较小的块并分布到多个节点和计算机集群上来高效地存储和处理大数据工作负载1.5. MapReduce框架1.5.1. 是一种编程模型用于在集群中并行处理和分析大数据集同样通过将工作负载分解成较小的任务并将其分布到集群中的多个节点1.5.2. 将大型、复杂的计算分解为多个任务并将这些任务分配给各个工作节点由它们协调并整合结果1.5.3. MapReduce框架自动处理并行化、容错和数据分发1.5.4. MapReduce程序由两个过程组成Map()用于过滤和排序、Reduce()用于总结数据1.5.5. MapReduce库已经用许多编程语言通常是Java编写并且有不同的优化级别1.6. 好处1.6.1. 可扩展性1.6.1.1. 提供了一个可扩展的架构可以处理大量数据1.6.1.2. 通过添加更多的标准硬件到集群中可以轻松扩展存储和处理能力这使得Hadoop成为一种成本效益高且灵活的解决方案1.6.2. 分布式计算1.6.2.1. 将数据和处理任务分配到一个机器集群中从而实现并行处理1.6.2.2. 将工作负载分散到多个节点上可以更快地处理大数据集1.6.3. 容错性1.6.3.1. 将数据复制到集群中的多个节点以确保数据即使在硬件故障时也能持久存在并保持可用1.6.4. 成本效益的存储1.6.4.1. 允许用户在常规、负担得起的硬件上存储大量数据而不是使用昂贵的专用存储系统这降低了存储成本1.6.5. 数据本地性1.6.5.1. 通过将计算移至数据存储位置附近而不是通过网络传输数据从而优化了数据处理这减少了网络开销并提高了整体效率1.6.6. 灵活性和兼容性1.6.6.1. 与各种数据格式兼容能够处理结构化、半结构化和非结构化数据1.6.7. 工具生态系统1.6.7.1. 拥有丰富的工具和框架生态系统这些工具扩展了Hadoop的功能提供了更高级的抽象、数据处理语言和分析功能1.6.7.2. YARN用于资源管理和作业调度1.6.7.3. Hive用于数据仓库1.6.7.4. Pig用于数据分析1.6.7.5. HBase一种NoSQL数据库1.6.7.6. Spark用于内存处理1.6.7.7. Presto用于分布式SQL1.6.8. 社区支持1.6.8.1. 拥有一个庞大且活跃的开源社区提供开发、改进和支持同时为用户提供大量的资源、文档和专业知识1.7. 潜在缺陷1.7.1. 复杂性1.7.1.1. 学习曲线较陡设置和管理起来也较为复杂1.7.1.2. 需要分布式系统的专门知识和专业技能这对没有相关经验或专职资源的组织来说可能是一个挑战1.7.2. 延迟1.7.2.1. MapReduceHadoop核心的处理框架基于批处理这会引入延迟因此可能不适用于实时或交互式数据处理场景1.7.3. 硬件要求1.7.3.1. Hadoop的分布式架构需要一个机器集群才能高效运行1.7.3.2. 搭建和维护这样的集群包括硬件和网络基础设施可能涉及巨大的成本和复杂性1.7.4. 数据管理开销1.7.4.1. Hadoop的HDFS提供了容错和复制功能但在节点间复制数据会消耗存储空间这增加了额外的存储开销1.7.5. 复杂的生态系统1.7.5.1. 生态系统非常丰富但它也很复杂因此管理和集成其中的组件可能会比较有挑战性1.7.6. 数据安全和治理1.7.6.1. Hadoop的分布式特性和数据复制可能会带来数据安全、隐私和治理方面的独特挑战1.7.6.2. 与传统的数据存储系统不同Hadoop的分布式特性要求组织超越标准的安全实践采用专门的安全措施和访问控制来应对其复杂性1.8. 如今云基础设施可以替代Hadoop集群云对象存储可以替代HDFS2. Databricks2.1. 是一个基于云的平台用于运行Apache Spark工作负载Spark是一个开源数据分析处理引擎2.2. Spark最初于2009年由UC Berkeley的AMPLab开发旨在解决MapReduce的局限性2.3. 设计目标是更快速、更易用并且能够处理批处理和实时数据流2.4. 自成立以来Databricks一直是Apache Spark的重要贡献者通过项目Tungsten进行了一系列优化旨在利用现代CPU架构提升处理效率2.5. Databricks推出了多种库以扩展Spark的能力2.6. Databricks还专注于让Spark更易于使用推出了Python、Java和Scala的高级API使得编写Spark应用程序更加容易2.7. 为了应对数据湖的局限性并提升可靠性和数据质量Databricks还推出了Delta Lake​这是一个开源存储层运行在现有数据湖之上2.7.1. Delta Lake解决了传统数据湖在数据质量、可靠性和性能方面的挑战2.7.2. Databricks于2019年将Delta Lake开源并将该项目贡献给Linux基金会以便更广泛的社区能够参与贡献2.7.3. 如今Delta Lake已广泛采用2.8. 在2020年Databricks推出了创新的数据架构—数据湖仓2.8.1. 这一创新标志着数据管理范式的重大转变2.9. 在Databricks看来现代数据架构应当是开放的、协作的并能够处理所有类型的数据和高级分析用例2.9.1. 该公司支持能够随着时间推移、随企业增长而扩展的架构2.10. Databricks的协作环境也能使数据网格中的跨职能团队更加高效地合作从而与启用面向领域的去中心化团队的原则相一致3. Snowflake3.1. 是一个完全托管的、基于云的数据仓库解决方案用于存储、组织和分析大量数据并且独特之处在于它不仅提供传统的数据仓库功能还能作为一个数据湖使用3.2. 该公司成立于2012年旨在解决传统数据仓库解决方案的局限性公司创始人开发了一个独特的架构将计算与存储分离从而允许基于需求独立且自动地扩展高效的数据分析和工作负载3.3. 云原生方法和架构吸引了各行各业的广泛客户提供按需付费的定价模式、强大的安全性、灵活性和可靠性3.4. 将Snowflake作为数据湖使用提供了统一数据平台的优势消除了对单独数据湖基础设施的需求从而简化了复杂性3.5. Snowflake的优势在于其高度优化的数据仓库功能和高效的查询与分析能力3.5.1. 如果需要进行特定的计算或专业处理可能需要将数据从Snowflake导出并使用其他计算引擎进行处理3.6. Snowflake与数据网格原则高度契合3.6.1. 公司认识到赋予领域专家和团队拥有自己数据的权利的重要性3.7. 强大的数据管理能力包括模式管理、元数据标签和目录化能够将数据视为宝贵的资产并且可以被组织内的其他团队访问和消费从而推动数据产品思维3.8. 还与数据网格概念中的可扩展性和弹性特点相契合其云原生架构允许独立扩展计算资源帮助团队适应不断变化的需求并高效地处理数据分析3.9. 使组织能够采用数据网格方法促进数据生态系统中的协作、自主性和敏捷性