hadoop和django,可能吗?

mcvgt66p  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(872)

据我所知,hadoop是一个分布式存储系统。然而,我真正不明白的是,我们能用hadoop取代普通的rdbms(mysql、postgresql、oracle)吗?或者hadoop只是另一种文件系统,我们可以在它上面运行rdbms?
另外,django能与hadoop集成吗?通常,web框架(asp.net、php、java(jsp、jsf等))是如何与hadoop集成的?
我对hadoop和rdbms有点困惑,我希望能有任何解释(抱歉,我看了很多次文档,但可能是因为我缺乏英语知识,我发现文档在大多数情况下有点混乱)

siotufzp

siotufzp1#

基本(!)django与hadoop集成的示例[删除链接]
我使用oozierestapi执行作业,使用hadoopcat获取作业结果(由于hdfs的分布式特性)。更好的方法是使用hoop之类的方法来获取hdfs数据。无论如何,这不是一个简单的解决方案。
p、 我已经重构了这段代码并将其放入https://github.com/obie-wan/django_hadoop. 现在它是一个单独的django应用程序。

gorkyyrv

gorkyyrv2#

hue,hadoop的webui是基于django的!

628mspwn

628mspwn3#

什么是hadoop?

想象一下下面的挑战:你有很多数据,我的意思是说,有很多数据,至少有TB。您希望将这些数据转换或提取一些信息,并将其处理为一种格式,这种格式以某种方式被索引、压缩或“消化”,以便您可以使用它。
hadoop能够并行化这样一个处理作业,而且最好的部分是处理文件的冗余存储、任务在集群上不同机器上的分布等(是的,您需要一个集群,否则hadoop无法补偿框架的性能损失)。
如果你第一眼看到hadoop生态系统,你会发现3个大术语:hdfs(hadoop文件系统)、hadoop本身(使用mapreduce)和hbase(有时是“数据库”列存储,它并不完全适合)
hdfs是hadoop和hbase都使用的文件系统。它是主机上常规文件系统之上的一个额外层。hdfs将上传的文件切成块(通常是64mb),并使它们在集群中可用,并负责它们的复制。
当hadoop获取要执行的任务时,它会获取hdfs上输入文件的路径、所需的输出路径、Map器和reducer类。mapper和reducer通常是一个在jar文件中传递的java类(但是通过hadoop流,您可以使用任何您想要的comandline工具)。Map器被调用来处理输入文件的每个条目(通常是按行,例如:“如果行中包含错误的f*字,则返回1”),输出被传递到reducer,reducer将单个输出合并为所需的其他格式(例如:数字相加)。这是一个简单的方法得到一个“坏字”计数器。
最酷的事情:Map的计算是在节点上完成的:线性地处理块,然后通过网络将半消化(通常较小)的数据移动到还原器。
如果其中一个节点死了:另一个节点有相同的数据。
hbase利用了文件的分布式存储,并将其表存储在集群上,这些表被分割成块。与hadoop相反,hbase提供对数据的随机访问。
正如您所看到的,hbase和hadoop与rdmbs有很大的不同。而且hbase缺少很多rdbms的概念。用触发器、preparedstatements、外键等对数据进行建模并不是hbase要做的事情(我不是100%确定,所以请纠正我;-)

django能与hadoop集成吗?

对于java来说很简单:hadoop是用java编写的,所有api都在那里,可以随时使用。
对于python/django,我还不知道,但我确信您可以使用hadoop streaming/jython作为最后的手段。我在mappers和reducer中发现了hadoopy和python。

roqulrg3

roqulrg34#

django可以连接大多数rdm,因此可以将它与基于hadoop的解决方案结合使用。
请记住,hadoop是很多东西,所以具体来说,你想要一些低延迟的东西,比如hbase,不要尝试将它用于hive或impala。
python有一个基于节俭的绑定happybase,它允许您查询hbase。

相关问题