一种基于Hadoop集群的超大文件并行数据块定位方法
【专利摘要】本发明公开了一种基于Hadoop集群的超大文件并行数据块定位方法,本发明是在Hadoop集群中应用Map/Reduce软件实现超大文件内多数据块定位的方法。本发明主要包括以下步骤:组建集群环境、构造序列文件、修改用户程序源代码和通过streaming方式调用用户程序,本发明通过控制Map的数量和序列,确定Map进程与多数据块之间的映射关系,并且可以定位数据块在文件中的位置,让指定Map进程处理指定数据块,同时本发明可以轻松实现超大文件的多数据块并行处理。
【专利说明】一种基于Hadoop集群的超大文件并行数据块定位方法
【技术领域】
[0001]本发明涉及一种基于Hadoop (分布式处理大量数据的软件框架)集群的超大文件(超过百GB)并行数据块定位方法,属于大数据处理领域。
【背景技术】
[0002]在高性能并行计算领域MapReduce海量数据处理框架应用广泛,通过廉价的普通计算机集群能得到过去只有昂贵大型服务器才拥有的大规模数据计算能力,而且在稳定性和扩展性等方面都优于传统的高性能计算方案。现在MapReduce模型被应用于天文信息计算处理、海量存储分析、病毒库存储、网络检索服务等方面,解决数据爆炸式增长与计算机存储能力和计算能力不足之间的矛盾。实际开发过程中,开发语言多种多样,而Streaming技术允许开发者使用任何编程语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植,大大减少了程序移植成本。
[0003]Hadoop的HDFS (Hadoop分布式文件系统)具有高容错性的特点,它将数据以一个或多个副本的形式分散存储在多台机器上,可以存储海量数据,并且可靠性高,提供对数据快速的、可扩展的访问,适用于一次写入、多次读取的访问模式。HDFS上的文件被划分为块大小的多个分块,作为独立的存储单元,系统默认块大小为64MB,用户也可以指定块大小。
[0004]在高性能计算中,有一类问题是多次处理同一个超大文件,每次处理的数据是大文件内以不同的偏移量开始的一段连续数据,并且每次运算之间相互独立,不存在依赖关系。此种计算模型在移植到Hadoop平台过程中,存储模型一般采用HDFS文件系统,计算模型一般采用Hadoop Streaming,在不改动或修改极少量程序源代码的情况的就能快速移植到Hadoop平台。Hadoop中的每个map进程分别处理大文件内、不同偏移量开始的一段连续数据,这种模型就需要开发者对map进程数量及每个map进程处理的数据在大文件内的偏移量进行控制,实现多个map进程并行定位超大文件中的多个数据块。
[0005]通常情况下map进程的数量由输入文件的大小和HDFS块大小决定,即由输入文件在HDFS中所占块数决定,默认情况下不可直接控制干涉。在Hadoop API中提供了相应接 口:org.apache, hadoop.mapred.JobConf.setNumMapTasks (int n)可以控制 map 进程数量,但官方文档对此函数的释义是“Note:This is only a hint to the framework”,即setNumMapTasks ()方法对Hadoop的框架来说仅仅是个提示,不能起决定性的作用。换言之,即便设置了这个值,也不一定能达到预期效果。
[0006]单个map进程虽然可以从一个文件中的任意偏移进行访问,即使此文件存储在HDFS文件系统中,文件块分布在不同的节点上,但对于多个map进程,一方面由于系统没有提供相应的接口来区分各个map进程,另一方面很多情况下每次所需处理的数据在大文件内的偏移地址无规律,因此当前情况下,分别指定每个map进程需要处理的数据在大文件内的偏移不可行。
[0007]综上所述,控制map进程数量,直接将大文件作为程序的输入并使得每个map进程分别精确定位本map进程需处理数据块在大文件内的偏移是不可行的。
【发明内容】
[0008]本发明要解决的技术问题是:克服现有技术的不足,提供了一种基于Hadoop集群的超大文件并行数据块定位方法,通过构造序列控制map进程数量的办法以及map进程运行办法,达到控制不同map进程分别处理偏移量不同的一段连续数据的效果。
[0009]本发明的技术解决方案是:
[0010]一种基于Hadoop集群的超大文件并行数据块定位方法包括步骤如下:
[0011]步骤1:通过搭建Hadoop环境组建Hadoop集群,配置HDFS关键属性;
[0012]步骤2:构造特定的序列文件;所述的特定序列文件的内容为整型数,每个整型数独占I行,序列文件中每行的值为每个map进程要处理的超大文件中的数据块的偏移量,序列文件的行数等于map进程的个数和需要处理的数据块的个数;
[0013]构造序列文件的方法为如下方法的任意一种:
[0014](a)使用Microsoft Office Excel按列方式生成特定的序列,然后以列方式拷贝到文本文件中;
[0015](b)在vim编辑器命令模式下,键入命令生成特定的序列;
[0016](c)手动生成需要的不规则序列,通过批处理文件或脚本文件生成特定序列;
[0017]步骤3:修改用户程序使得用户程序能够接收标准输入流传递的数据,将该数据转换成整型数据,并通过该整型数据设置程序中要读的超大文件中的数据块的起始地址;
[0018]步骤4:通过Hadoop集群的streaming方式调用步骤(3)中修改后的用户程序和步骤(2)中的序列文件完成并行数据块的定位,完成并行数据定位的方法为:通过步骤(2)中的超大数据的偏移量和步骤(3)中的超大文件的起始地址完成并行数据的定位。
[0019]所述集群中的每个计算机节点均有独立的CPU、内存、本地硬盘和操作系统。
[0020]所述集群中的每个计算机节点通过以太网或Infiniband (支持多并发链接的“转换线缆技术”)互联。
[0021 ] 本发明与现有技术相比的有益效果是:
[0022](I)本发明采用streaming技术实现只要按照标准输入输出格式进行编程,就可以满足hadoop要求,因此单机程序稍加修改就可以在集群上进行使用,提高工作效率,便于测试。
[0023](2)本发明采用的streaming技术能够实现对非Java语言的支持,实际工程中可以根据工程需求情况选取最合适的开发语言,再通过streaming技术使之运行在hadoop平台上,通过这种方法使程序执行效率更高。
[0024](3)本发明构造序列文件精确控制map进程数量可以更有效的提高程序执行效率,控制集群负载均衡。
[0025](4)本发明使用序列文件实现对大文件的定位,使每个map进程分别处理大文件内不同起始位置的数据,控制简单,易于操作。
【专利附图】
【附图说明】
[0026]图1为本发明基于Hadoop集群的超大文件并行数据块定位的方法流程图。【具体实施方式】[0027]下面结合附图对本发明的【具体实施方式】进行进一步的详细描述。
[0028]本发明通过控制Map的数量和序列,确定map进程与多数据块之间的映射关系,并且可以定位数据块在文件中的位置,让指定Map进程处理指定数据块。如图1所示,本发明的具体步骤如下:
[0029]步骤1:通过搭建Hadoop环境组建Hadoop集群,配置HDFS关键属性;
[0030]将Hadoop环境部署到4个计算机节点上,其中1个计算机节点为名称节点(namenode),另外3台为数据节点(datanode),共同承担计算机存储任务,HDFS存储副本数为3,所述集群中的每个计算机节点均有独立的CPU、内存、本地硬盘和操作系统;所述集群中的每个计算机节点通过以太网或Infiniband(支持多并发链接的“转换线缆技术”)互联。[0031 ] 所述的HDFS关键属性包括:
[0032](a)配置默认文件系统,定义主机系统名称及名称节点工作的端口号;
[0033](b)配置名称节点存储永久性元数据的目录列表;
[0034](c)配置数据节点存放数据块的目录列表;
[0035](d)配置数据节点数据存储的副本数量;
[0036]步骤2:构造特定的序列文件;所述的特定序列文件的内容为整型数,每个整型数独占1行,序列文件中每行的值为每个map进程要处理的超大文件中的数据块的偏移量,序列文件的行数等于map进程的个数和需要处理的数据块的个数;
[0037]构造序列文件的方法为如下方法的任意一种:
[0038](a)使用Microsoft Office Excel按列方式生成特定的序列,然后以列方式拷贝到文本文件中;
[0039](b)在vim编辑器命令模式下,键入命令生成特定的序列;
[0040](c)手动生成需要的不规则序列,通过批处理文件或脚本文件生成特定序列;
[0041]步骤3:修改用户程序使得用户程序能够接收标准输入流传递的数据,将该数据转换成整型数据,并通过该整型数据设置程序中要读的超大文件中的数据块的起始地址;
[0042]步骤4:通过Hadoop集群的streaming (使用非JAVA语言调用map和reduce函数技术)方式调用步骤(3)中修改后的用户程序和步骤(2)中的序列文件完成并行数据块的定位,完成并行数据定位的方法为:通过步骤(2)中的超大数据的偏移量和步骤(3)中的超大文件的起始地址完成并行数据的定位,将Hadoop集群的input选项设置为步骤(3)中生成的序列文件,将inputformat选项设置为map进程数量由输入的序列文件行数决定。
[0043]本发明说明书中未作详细描述的内容属于本领域技术人员的公知技术。
【权利要求】
1.一种基于Hadoop集群的超大文件并行数据块定位方法,其特征在于包括步骤如下: 步骤1:通过搭建Hadoop环境组建Hadoop集群,配置HDFS关键属性; 步骤2:构造特定的序列文件;所述的特定序列文件的内容为整型数,每个整型数独占I行,序列文件中每行的值为每个map进程要处理的超大文件中的数据块的偏移量,序列文件的行数等于map进程的个数和需要处理的数据块的个数; 构造序列文件的方法为如下方法的任意一种: (a)使用MicrosoftOffice Excel按列方式生成特定的序列,然后以列方式拷贝到文本文件中; (b)在vim编辑器命令模式下,键入命令生成特定的序列文件; (c)手动生成需要的不规则序列文件 Cd)通过批处理文件或脚本文件生成特定序列文件; 步骤3:修改用户程序使用户程序能够接收由标准输入流传递的数据,将该数据转换成整型数据,并通过该整型数据设置程序中要读的超大文件中的数据块的起始地址; 步骤4:通过Hadoop集群的streaming方式调用步骤(3)中修改后的用户程序和步骤(2)中的序列文件完成并行数据块的定位,完成并行数据定位的方法为:通过使用Hadoop集群的streaming方式实现定位程序并行化,通过步骤(2)中序列文件的超大数据的偏移量和步骤(3 )中的超大文件的起始地址完成数据的定位。
2.如权利要求1所述的一种基于Hadoop集群的超大文件并行数据块定位方法,其特征在于:所述集群中的每个计算机节点均有独立的CPU、内存、本地硬盘和操作系统。
3.如权利要求1所述的一种基于Hadoop集群的超大文件并行数据块定位方法,其特征在于:所述集群中的每个计算机节点通过以太网或Infiniband互联。
【文档编号】G06F17/30GK103699627SQ201310712421
【公开日】2014年4月2日 申请日期:2013年12月20日 优先权日:2013年12月20日
【发明者】孙彦猛, 苏丽, 刘文俊, 张博为 申请人:北京遥测技术研究所, 航天长征火箭技术有限公司