django - Hadoop和Django,有可能吗?

标签 django hadoop rdbms

据我了解,Hadoop 是一个分布式存储系统。但是我真正不明白的是,我们可以用 Hadoop 替换普通的 RDBMS(MySQL、Postgresql、Oracle)吗?或者 Hadoop 只是另一种类型的文件系统,我们可以在其上运行 RDBMS?

还有,Django可以和Hadoop集成吗?通常,Web 框架(ASP.NET、PHP、Java(JSP、JSF 等))如何与 Hadoop 集成?

我对 Hadoop 与 RDBMS 之间的关系有点困惑,如果有任何解释,我将不胜感激。 (抱歉,我看了很多遍文档,但可能是因为我的英语知识不足,我发现文档大部分时间都有些困惑)

最佳答案

什么是 Hadoop?

想象一下以下挑战:您有大量数据,我的意思是至少有 TB 级的数据。您想要转换此数据或提取一些信息并将其处理成一种格式,以某种方式进行索引、压缩或“消化”,以便您可以使用它。

Hadoop 能够并行处理这样的处理工作,而且最好的部分来了,它负责文件的冗余存储、在集群上的不同机器上分配任务等事情(是的,你需要一个集群,否则 Hadoop 无法补偿框架的性能损失)。

如果您首先了解 Hadoop 生态系统,您会发现 3 个大术语:HDFS(Hadoop 文件系统)、Hadoop 本身(使用 MapReduce)和 HBase(“数据库”有时是列存储,并不完全适合)

HDFS 是 Hadoop 和 HBase 使用的文件系统。它是主机上常规文件系统之上的额外层。 HDFS 将上传的文件分成 block (通常为 64MB),并使它们在集群中可用并负责复制。

当 Hadoop 获得要执行的任务时,它会获得输入文件在 HDFS 上的路径、所需的输出路径、映射器和 reducer 类。 Mapper 和 Reducer 通常是在 JAR 文件中传递的 Java 类。(但是使用 Hadoop Streaming 您可以使用任何您想要的命令行工具)。映射器被调用来处理输入文件的每个条目(通常按行,例如:“如果该行包含错误的 F* 字,则返回 1”),输出被传递给缩减器,缩减器将单个输出合并为所需的其他格式(例如:添加数字)。这是获得“坏词”计数器的简单方法。

很酷的事情:映射的计算是在节点上完成的:你线性地处理 block ,你只通过网络将半消化的(通常较小的)数据移动到缩减器。

如果其中一个节点死亡:还有另一个具有相同数据的节点。

HBase 利用文件的分布式存储并存储其表,在集群上分成 block 。与 Hadoop 不同,HBase 提供对数据的随机访问。

如您所见,HBase 和 Hadoop 与 RDMBS 有很大不同。 HBase 也缺少很多 RDBMS 的概念。使用触发器、准备语句、外键等对数据建模并不是 HBase 被认为要做的事情(我对此不是 100% 确定,所以请纠正我 ;-))

Django 可以与 Hadoop 集成吗?

对于 Java,这很简单:Hadoop 是用 Java 编写的,所有 API 都已准备就绪,可以使用。

对于 Python/Django,我还不知道(还),但我相信在万不得已的情况下,您可以使用 Hadoop 流式处理/Jython 做一些事情。 我发现了以下内容:HadoopyPython in Mappers and Reducers .

关于django - Hadoop和Django,有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667868/

相关文章:

Django admin change_view 未调用

python - 在 python-social-auth 中从 google 和 facebook 检索个人资料图片

python - Django 在 django.contrib.auth.login 之后执行函数

database - 远程传感器数据记录的最佳数据库

mysql - 我读到的关于 "that bad"的一致性/数据丢失/查询优化问题是什么?

java - 关于 Android 手机、服务器和数据库之间使用什么 DBMS 进行交互的帮助?

database - 在 Satchmo/Django 项目上使用 Git 的正确方法

hadoop - Hadoop单节点安装

hadoop - 是否可以压缩配置单元外部表中包含 Json 数据的 Parquet 文件?

hadoop - 没有函数映射到名称 "coord:formatTime"