Hadoop执行分布式Process

2019-03-28 13:27|来源: 网络

要把N个超级大表导入HBase,N是按月来分的,表:亿+的行数,100+的字段。测试过sqoop,JDBC,性能都不满意,对任务失败重做也很麻烦,HBase的批量导出还靠谱点,但这样导入HBase有几个麻烦的地方:

1.所以的表都是没主键的,HBase的rowkey就要了亲命了,只能在导出的时候用SQL拼个了。

2.HBase的importtsv只支持用符号分割的文本方式导入。

3.预先的region切分

以文本方式导出,sqluldr2是我用过最有效率的工具(感谢Fangxin Lou)。问题sqluldr2是底层工具,能不能相互结合提高性能呢?其实是可以的。

1.java API 里有个Process类,它可以去调用sqluldr2。

2.Hadoop的map-reduce可以让每个节点都去运行sqluldr2,然后转化成HBase格式进行put,参考Hbase的importtsv。

要注意的:

1.map的运行是依赖于input,比如你想要3map-task,但你的input在第一个task的时候就被读完了,那抱歉剩下的2个task 除了写日志什么都不会做(然后还会告诉你运行的相当成功...>_<)。

2.sqluldr2不导出重复数据,用SQL分割数据,可以先查下count,但map是不同机器的JVM运行的,我的解决办法是在 map-reduce 执行前,通过其他程序预先在HDFS写好分割文件,然后通过实现InputFormat,InputSplit每一行对应一个task。

3.使用合适的hadoop调度器保证map-task平均分摊到每个节点。

4.Process是用InputStream来交互的。

5.mapred.task.timeout,默认是10分钟,建议设置大点,mapred.map.tasks.speculative.execution最好设置为false。

相关问答

更多
  • 1、能搭好环境说明水平还不错。 2、下边应该分以下几步走: 一,依据示例程序,自己手写wordcount之类的示例程序,以此充分了解m/r和hdfs的简单原理。 二,针对某些知识点,如hadoop应用场景、hadoop的简单应用等,去百度一下搞定,这样的问题最关键、最需要做的。 三,深入阅读hadoop的源码,把框架的数据流或说工作流搞个大致清楚。 四,试着用hadoop解决一些实际问题和项目应用。 参考下吧。
  • 常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。 GFS(Google File System) -------------------------------------- Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为 ...
  • 若在windows的Eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后去进行分布式运行(您也可以自己写java代码去设置job的configuration属性)。   若不拷贝,工程中bin目录没有完整的xml配置文件,则windows执行的mapreduce程序全部通过本机的jvm执行,作业名也是带有“local"字眼的作业,如 job_local2062122004_0001。 这不是真正的分布式运行mapred ...
  • 搭建的文本,很久了,现在更新的最新版本搭建更加简单,建议你去看看黑马里边的教程,免费的
  • 在 /usr/local/hadoop/ 下面启动,找到是/opt/Hadoop/下面的hadoop安装包,是不是HADOOP_HOME环境变量配置的有问题。 可以到海牛部落交流,那里有好多学习hadoop的朋友
  • hadoop集群指的是一群机器在一起提供一个hadoop的集群的服务。 hadoop分布式指的是hadoop支持任务分布式运行,因为有hadoop集群提供服务,所以hadoop将任务分发到集群的多台机器运行,所以叫做分布式。 一个是服务器架构,一个是任务运行架构。
  • 一、DFS为何物? DFS 即微软分布式文件系统的简称,系统管理员可以利用它来有效的整合网络资源,并把这些资源以单一的层次结构呈现给网络用户。管理员利用它可以把资源发布成一 个树形结构,这样大大简化了为用户进行资源配置和对资源管理的工作量。我们可以在不同的机器上调整和移动文件,这不会影响到用户的访问。 二、为什么要使用DES? 1、DFS使用了现有网络中的Share权限,管理员不必进行新的配置 2、通过一个DFS树形结构用户就可以访问多个网络资源,而不用再把远程驱动器映射到本地共享资源中。 3、DFS可以配 ...
  • 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、数据存于哪个站点以及事务在哪个站点上执行等。 故名思义,分布式 ...
  • 要知道您是以独立还是伪分布模式运行hadoop,请验证您的配置文件。 以下信息可能有帮助。 To know if you are running hadoop in Standalone or Pseudo distributed mode, verify your configuration files. Below information might help.
  • 是的,文件通过网络传输,通常是通过HDFS传输。 与使用HDFS进行非数据本地任务相比,它不会对网络造成任何压力。 如果文件很大,可能会出现网络拥塞,但是你已经把你的jar推送到所有这些任务跟踪器,所以只要你的文件不比你的文件大得多,你的开销就不应该是太糟糕了。 文件的复制与最终将拉动此文件的任务跟踪器的数量完全分开。 复制也将从一个节点链接到另一个节点,无论如何都是具有容错分布式文件系统的成本。 同样,网络拥塞不再是将jar推送到所有任务跟踪器的问题,假设分布式缓存中的文件与jar的大小相同。 总的来说, ...