Hadoop HDFS依赖项

Hadoop HDFS依赖项,hadoop,hdfs,Hadoop,Hdfs,hadoop中的mapreduce编程模型;当我们处理文件时,是必须将文件保存在HDFS文件系统中,还是我可以将文件保存在其他文件系统中,并且仍然可以使用mapreduce编程模型?您可以将文件保存在其他位置,但会失去数据位置优势。 例如如果您使用的是AWS,您可以将文件存储在S3上,并直接从Map reduce代码、Pig、Hive等访问它们。为了使用Apache Haddop,您必须将文件保存在hadoop文件系统HDFS中。虽然有不同的抽象类型的HDF,如AWS S3,但它们都是基本级别的

hadoop中的mapreduce编程模型;当我们处理文件时,是必须将文件保存在HDFS文件系统中,还是我可以将文件保存在其他文件系统中,并且仍然可以使用mapreduce编程模型?

您可以将文件保存在其他位置,但会失去数据位置优势。
例如如果您使用的是AWS,您可以将文件存储在S3上,并直接从Map reduce代码、Pig、Hive等访问它们。

为了使用Apache Haddop,您必须将文件保存在hadoop文件系统HDFS中。虽然有不同的抽象类型的HDF,如AWS S3,但它们都是基本级别的HDFS存储

数据需要在HDFS中,因为HDFS将数据分布在集群中。在映射阶段,每个映射器遍历存储在其节点中的数据,然后将其发送到运行给定块的reducer代码的适当节点


您不能让Hadoop MapReduce使用HDFS进行Put。

映射程序从
InputFormat
的实现中读取输入数据。大多数实现源于
FileInputFormat
,它从本地机器或HDFS读取数据。(默认情况下,数据是从HDFS读取的,mapreduce作业的结果也存储在HDFS中。)当您希望从替代数据源(而不是HDFS)读取数据时,可以编写自定义的
InputFormat

TableInputFormat
将直接从HBase读取数据记录,
DBInputFormat
将访问关系数据库中的数据。您还可以想象这样一个系统,其中数据通过特定端口通过网络传输到每台机器;
InputFormat
从端口读取数据,并将其解析为单独的记录以进行映射

但是,在您的情况下,在单个或多个服务器上的ext4文件系统中有数据。为了方便地在Hadoop中访问这些数据,您必须首先将其复制到HDFS中。这样,当并行处理文件块时,您将受益于数据局部性


我强烈建议阅读有关此主题的详细信息。要收集用于mapreduce处理的日志文件,请查看。

您希望使用什么文件系统?类似mysql数据库之类的东西?我在服务器上有日志文件;我想使用ext4类型的日志文件,所以您真正想要的是访问未通过管道传输到hdfs目录的文件?还有一个更好的问题是,如何使用不存储在HDFS中的文件的MapReduce引擎?@djc391:S3可以是类似HDFS的存储,其中MapReduce的数据将存储在HFDS中,或者直接从S3=读取,而不使用HDFS。请参阅。它是hdfs的“替代品”,因为您使用的不是自己的服务器hdfs集群,而是amazon的hdfs集群。它没有使用自己的HDF。