知识点
相关文章
更多最近更新
更多Hadoop集群lzo文件的并行map处理
2019-03-28 14:09|来源: 网络
Hadoop集群中启用了lzo后,还需要一些配置,才能使集群能够对单个的lzo文件进行并行的map操作,以提升job的执行速度。
首先,要为lzo文件创建index。下面的命令对某个目录里的lzo文件创建index:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.LzoIndexer /log/source/cd/
使用该命令创建index要花些时间的,我一个7.5GB大小的文件,创建index,花了2分30秒的样子。
其实创建index时还有另外一个参数,
即com.hadoop.compression.lzo.DistributedLzoIndexer。两个选项可以参考:https://github.com/kevinweil/hadoop-lzo,该文章对这两个选项的解释,我不是很明白,但使用后一个参数可以减少创建index时所花费的时间,
而对mapreduce任务的执行没有影响。如下:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.DistributedLzoIndexer /log/source/cd/
然后,在Hive中创建表时,要指定INPUTFORMAT和OUTPUTFORMAT,否则集群仍然不能对lzo进行并行的map处理。在hive中创建表时加入下列语句:
SET FILEFORMAT INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat" OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";
执行了这两步操作后,对hive执行速度的提升还是很明显的。在测试中,我们使用一个7.5GB大小的lzo文件,执行稍微复杂一点的Hive命令,使用上述配置后仅需34秒的时间,而原来要180秒。
相关问答
更多-
如何查看hadoop集群中可用的map数目[2023-02-18]
2.0版本之前可以通过hadoop自带的web管理界面查看,端口是50030;2.0之后没有map和reduce slot的概念,所以也就没有map数量一说,改成了直接对资源进行管理。 释义: map的数量 map的数量通常是由hadoop集群的DFS块大小确定的,也就是输入文件的总块数,正常的map数量的并行规模大致是每一个Node是10~100个,对于CPU消耗较小的作业可以设置Map数量为300个左右,但是由于hadoop没一个任务在初始化时需要一定的时间,因此比较合理的情况是每个map执 ... -
Hadoop集群和单机下读取文件的速度是一样的吗?[2021-11-04]
如果是大文件并且集群模式,hadoop会处理多个dn上的并行读,会快。 -
如何通过实现getSplits来增加hadoop map任务(How to increase hadoop map tasks by implementing getSplits)[2024-01-23]
更改拆分大小以包含更多拆分。 Configuration conf= new Cofiguration(); //set the value that increases your number of splits. conf.set("mapred.max.split.size", "1020"); Job job = new Job(conf, "My job name"); Change the split size to have more splits. Configuration conf= ... -
我通过首先创建一个RDD来识别索引,然后使用from_json函数将每行转换为StructType ,从而有效地生成spark.read.json(...)类似结果, posts_rdd = sc.newAPIHadoopFile(posts_dir, 'com.hadoop.mapreduce.LzoTextInputFormat', 'org.apache.hadoop.io. ...
-
如何用-c开关在子lzop中启动lzop二进制文件 ,然后逐行读取其STDOUT? How about starting an lzop binary in a subprocess with -c switch and then read its STDOUT line by line?
-
退后一步:给定的Mapper如何知道要使用哪个本地文件系统路径名(20个中的5个与其他路径名不同)? 他们会做反复试验吗? 通常,您尝试避免在本地环境/本地文件系统设置方面在不同映射器之间存在差异。 如果您需要查找特定文件,那么可能需要包含一个预处理步骤,该步骤将文件从各个映射器计算机上载到hdfs目录 - 可能包括新路径中的本地主机名。 也许你可以提一下这个有点非标准设置的动力。 基于OP澄清的更新 。 在mapper中添加代码 (a) checks if the file exists (on Loca ...
-
对我的第一个问题的简短回答: AWS不会自动编制索引。 我已经用自己的工作证实了这一点,并且在他们的论坛上也从Andrew @ AWS中读到了相同的内容。 以下是如何进行索引编制的方法: 要索引一些LZO文件,你需要使用我自己的从hadoop-lzo项目构建的Jar。 如果要直接使用EMR进行索引,则需要在某处构建Jar,然后上传到Amazon S3。 另外,Cloudera对在您自己的群集上进行此设置的所有步骤都有很好的说明。 我在我的本地群集上做了这个,这允许我构建Jar并上传到S3。 如果您不想自己构 ...
-
在普通Java中用原始文件创建lzo文件和Lzo索引文件(Create lzo file and Lzo index file from raw file in plain Java)[2023-12-13]
因此,在hadoop世界之外没有可用的库来创建lzo和lzo索引文件。 这基本上让我们使用像hadoop-lzo这样的开源项目(调用native c ++ lzo library)和lzo-java(其中包含lzo压缩的java实现) So there aren't libraries readily available outside hadoop world to create lzo and lzo index files. Which basically leaves us to use open ... -
我得到了与你相同的结果,最终这对我有用: export C_INCLUDE_PATH=/usr/local/Cellar/lzo/2.09/include/lzo:/usr/local/Cellar/lzo/2.09/include export LIBRARY_PATH=/usr/local/lib pip install python-lzo (显然,您可能需要调整这些,具体取决于您安装的lzo brew发行版的版本。) 哪个回答了我的问题,但我真的不明白为什么没有正确配置... 我也安装了Xco ...
-
zookeeper和Kafka在hadoop 2.6集群中的位置(Where does zookeeper and Kafka fit in hadoop 2.6 cluster)[2022-05-16]
Zookeeper是分布式系统的协调框架。 Zookeeper用于协调HDFS和Yarn高可用性状态,Hbase主服务器和区域服务器之间的协调等.Kafka与Apache Storm,Apache HBase和Apache Spark结合使用,用于实时分析和呈现流数据。 常见用例包括: 流处理。 网站活动跟踪 度量标准收集和监控 日志聚合 通常我们使用Kafka和Storm。 Storm需要一个zookeeper集群来协调nimbus和supervisor之间的协调。 Kafka需要zookeeper来存储 ...