Apache Hadoop:将压缩数据插入 HDFS
Apache Hadoop: Insert compress data into HDFS
我需要将 100 个文本文件上传到 HDFS 以使用 Apache Pig 进行一些数据转换。
您认为最好的选择是什么:
a) 压缩所有文本文件,只上传一个文件,
b) 单独加载所有文本文件?
这取决于您的文件大小、集群参数和处理方法。
如果您的文本文件大小与 HDFS 块大小相当(即块大小 = 256 MB,文件大小 = 200 MB),按原样加载它们是有意义的。
如果您的文本文件非常小,则会出现典型的 HDFS 和小文件问题 - 每个文件将占用 1 个 hdfs 块(不是物理上的),因此 NameNode(处理元数据)将在管理大量文件时承受一些开销块。要解决这个问题,您可以将文件合并为一个文件,使用 hadoop 存档 (HAR) 或一些自定义文件格式(例如序列文件)。
如果使用自定义格式,您将需要做额外的处理工作 - 需要使用自定义输入格式。
在我看来,100 不会对 NameNode 性能产生太大影响,因此这两个选项似乎都是可行的。
我需要将 100 个文本文件上传到 HDFS 以使用 Apache Pig 进行一些数据转换。
您认为最好的选择是什么:
a) 压缩所有文本文件,只上传一个文件,
b) 单独加载所有文本文件?
这取决于您的文件大小、集群参数和处理方法。
如果您的文本文件大小与 HDFS 块大小相当(即块大小 = 256 MB,文件大小 = 200 MB),按原样加载它们是有意义的。
如果您的文本文件非常小,则会出现典型的 HDFS 和小文件问题 - 每个文件将占用 1 个 hdfs 块(不是物理上的),因此 NameNode(处理元数据)将在管理大量文件时承受一些开销块。要解决这个问题,您可以将文件合并为一个文件,使用 hadoop 存档 (HAR) 或一些自定义文件格式(例如序列文件)。
如果使用自定义格式,您将需要做额外的处理工作 - 需要使用自定义输入格式。
在我看来,100 不会对 NameNode 性能产生太大影响,因此这两个选项似乎都是可行的。