Hai*_*uha 22 django rdbms hadoop
据我所知,Hadoop是一个分布式存储系统.但是我真正得到的是,我们可以用Hadoop替换普通的RDBMS(MySQL,Postgresql,Oracle)吗?或者Hadoop只是另一种类型的文件系统,我们可以在其上运行RDBMS吗?
另外,Django可以与Hadoop集成吗?通常,Web框架(ASP.NET,PHP,Java(JSP,JSF等))如何与Hadoop集成?
我对Hadoop与RDBMS有点混淆,我将不胜感激任何解释.(对不起,我多次阅读文档,但可能由于我缺乏英语知识,我发现文档在大多数时候都有点混乱)
rom*_*ius 24
想象一下以下挑战:你有很多数据,而且很多我的意思是至少Terabytes.您希望转换此数据或提取某些信息并将其处理为以某种方式编制索引,压缩或"消化"的格式,以便您可以使用它.
Hadoop是能够并行这样的处理作业和,来这里的最好的部分,需要照顾的东西,如文件的冗余存储,比对集群等不同的机器上(是的,你需要集群,否则Hadoop是任务的分配无法弥补框架的性能损失).
如果你把在Hadoop的生态系统先看看,你会发现3个大方面:HDFS(Hadoop的文件系统),Hadoop的本身(带的MapReduce)和HBase的("数据库"有时列存储,它不完全适合)
HDFS是Hadoop和HBase使用的文件系统.它是主机上常规文件系统顶部的额外层.HDFS将上传的文件分块(通常为64MB)并在群集中保持可用,并负责复制.
当Hadoop获取要执行的任务时,它将获取HDFS上输入文件的路径,所需的输出路径,Mapper和Reducer类.Mapper和Reducer通常是在JAR文件中传递的Java类.(但是使用Hadoop Streaming,您可以使用任何所需的comandline工具).调用映射器来处理输入文件的每个条目(通常按行,例如:"如果行包含错误的F*字则返回1"),输出将传递给reducer,它将单个输出合并为所需的输出其他格式(例如:添加数字).这是获得"坏词"计数器的简单方法.
很酷的事情:映射的计算是在节点上完成的:你线性处理块,你只是通过网络将半消化(通常较小)的数据移动到reducer.
如果其中一个节点死亡:另一个节点具有相同的数据.
HBase利用文件的分布式存储并存储其表,在群集上以块的形式分割.与Hadoop相反,HBase随机访问数据.
如您所见,HBase和Hadoop与RDMBS完全不同.HBase也缺乏很多RDBMS的概念.使用触发器,预备声明,外键等建模数据并不是HBase想要做的事情(我不是100%肯定这个,所以纠正我;-))
对于Java来说很简单:Hadoop是用Java编写的,所有的API都在那里,随时可以使用.
对于Python/Django我还不知道(但是),但我确信你可以用Hadoop streaming/Jython作为最后的手段.我发现了以下内容:Mapper和Reducers中的Hadoopy和Python.
| 归档时间: |
|
| 查看次数: |
12896 次 |
| 最近记录: |