hadoop重启后 分布式缓存文件还在么

hadoop重启后 分布式缓存文件还在么,第1张

Hadoop 分布式缓存实现目的是在所有的MapReduce调用一个统一的配置文件,首先将缓存文件放置在HDFS中,然后程序在执行的过程中会可以通过设定将文件下载到本地具体设定如下:

public static void main(String[] arge) throws IOException, ClassNotFoundException, InterruptedException{

Configuration conf=new Configuration();

confset("fsdefaultname", "hdfs://192168145:9000");

FileSystem fs=FileSystemget(conf);

fsdelete(new Path("CASICJNJP/gongda/Test_gd20140104"));

confset("mapredjobtracker", "192168145:9001");

confset("mapredjar", "/home/hadoop/workspace/jar/OBDDataSelectWithImeiTxtjar");

Job job=new Job(conf,"myTaxiAnalyze");

DistributedCachecreateSymlink(jobgetConfiguration());//

try {

DistributedCacheaddCacheFile(new URI("/user/hadoop/CASICJNJP/DistributeFiles/imeitxt"), jobgetConfiguration());

} catch (URISyntaxException e1) {

// TODO Auto-generated catch block

e1printStackTrace();

}

jobsetMapperClass(OBDDataSelectMaperclass);

jobsetReducerClass(OBDDataSelectReducerclass);

//jobsetNumReduceTasks(10);

//jobsetCombinerClass(IntSumReducerclass);

jobsetMapOutputKeyClass(Textclass);

jobsetMapOutputValueClass(Textclass);

FileInputFormataddInputPath(job, new Path("/user/hadoop/CASICJNJP/SortedData/20140104"));

FileOutputFormatsetOutputPath(job, new Path("CASICJNJP/gongda/SelectedData"));

Systemexit(jobwaitForCompletion(true)0:1);

}

代码中标红的为将HDFS中的/user/hadoop/CASICJNJP/DistributeFiles/imeitxt作为分布式缓存

public class OBDDataSelectMaper extends Mapper<Object, Text, Text, Text> {

String[] strs;

String[] ImeiTimes;

String timei;

String time;

private javautilList<Integer> ImeiList = new javautilArrayList<Integer>();

protected void setup(Context context) throws IOException,

InterruptedException {

try {

Path[] cacheFiles = DistributedCachegetLocalCacheFiles(context

getConfiguration());

if (cacheFiles != null && cacheFileslength > 0) {

String line;

BufferedReader br = new BufferedReader(new FileReader(

cacheFiles[0]toString()));

try {

line = brreadLine();

while ((line = brreadLine()) != null) {

ImeiListadd(IntegerparseInt(line));

}

} finally {

brclose();

}

}

} catch (IOException e) {

Systemerrprintln("Exception reading DistributedCache: " + e);

}

}

public void map(Object key, Text value, Context context)

throws IOException, InterruptedException {

try {

strs = valuetoString()split("\t");

ImeiTimes = strs[0]split("_");

timei = ImeiTimes[0];

if (ImeiListcontains(IntegerparseInt(timei))) {

contextwrite(new Text(strs[0]), value);

}

} catch (Exception ex) {

}

}

}

上述标红代码中在Map的setup函数中加载分布式缓存。

缓存系统中的主要使用的数据结构是memcached。

memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。

memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。

由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。

扩展资料:

一、存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启 *** 作系统会导致全部数据消失。

另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

二、通信分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍memcached的分布式。

1、分布式相比于传统存储系统的优点

①高性能:它通常可以高效地管理读缓存和写缓存,支持自动的分布式存储通过将热点区域2映射到高速缓存,提高响应速度。一旦不在是热点,那么存储系统将会把他们移除。写缓存技术可配合高速存储明显改变整体存储的性能,按照一定的策略先将数据写入高速存储,再在适当的时间进行同步落盘。

②支持分布式存储:通过网络进行松耦合链接,允许高速村塾和低速存储分开部署。一定条件下分层存储的优势可以发挥到最佳。解决了最大的问题是当性能池读不命中后,从冷池提取数据的粒度太大,导致延迟高,从而给造成整体的性能的抖动的问题。

③多副本一致性:他相比传统的存储框架使用RAID不同。它采用了多分本备份机制,存储之前进行分片,之后按照一定的规则存在集群的节点上,为了保证数据一致性,布式存储通常采用的是一个副本写入,多个副本读取的强一致性技术,读取数据失败,从其他副本获取,重新写入该副本恢复。

④容灾与备份:对于容灾采用最重要的手段就是快照,可以实现一定时间下的数据的保存。他有利于故障重现,有助于分析研究,避免灾难,备份就是为了数据的安全性。

⑤d性扩展:分布式存储可预估并且d性扩展计算、存储容量和性能,节点扩展后,旧数据自动迁移到新节点上,实现负载均衡,避免单点问题。水平扩展只需要将节点和原来的集群链接到同一网络,整个过程不会对业务造成影响,当加节点时,集群系统的容量和性能随之线性扩展,新节点资源会被平台接管,分配或吸收。

⑥存储系统标准化:随着分布式存储的发展,存储行业的标准化进程也不断推进,分布式存储优先采用行业标准接口(SMI-S或OpenStack Cinder)进行存储接入,在平台层面,通过将异构存储资源进行抽象化,将传统的存储设备级的 *** 作封装成面向存储资源的 *** 作,从而简化异构存储基础架构的 *** 作,以实现存储资源的集中管理,并能够自动执行创建、变更、回收等整个存储生命周期流程。基于异构存储整合的功能,用户可以实现跨不同品牌、介质地实现容灾,如用中低端阵列为高端阵列容灾,用不同磁盘阵列为闪存阵列容灾等等,从侧面降低了存储采购和管理成本。

2、分布式相比于传统存储系统的缺点

首先,从部署与维护的角度来看,分布式存储部署过程较为复杂,需要专门的人才进行部署,维护与管理,需要一定的时间培养专门的人才。其次,从硬件设备角度来看,分布式存储使用的均为X86架构服务器,稳定性可能不如传统的硬件存储。尤其对于银行,金融,政府等重要行业,稳定永远大于一切,他们既是新技术的实践者但同时也需要最稳定的环境保持业务的良好运行。最后,对于数据保护技术,大部分都是通过副本技术实现数据保护机制,常见的有两副本三副本等,这样也会造成可用存储容量的降低。

分布式元数据管理:分布式元数据管理主要通过元数据服务分布式部署的方式,实现了元数据分布式管理,解决一般分布式文件系统的单元数据服务节点导致的响应用户请求效率不高、存储文件数目受限和单点故障等问题,具有降低用户请求处理延迟,提高分布式文件系统的可扩展性和可用性的特性。一般包括完全分布式架构、元数据访问负载均衡、元数据服务器高效索引、元数据服务器d性伸缩等技术点。

多层级存储管理:多层级存储管理用于实现内存 / SSD/HDD 等异构存储设备的池化管理,以及各类存储设备的动态接入管理,通过设备抽象和提供统一命名空间,面向分布式文件系统提供统一的存储资源池,支持热点数据自动感知和智能化存储调度,最大程度提升数据存储与访问的效能。一般包括异构存储设备管理、多存储系统适配、统一命名空间、基于热度的存储资源调度等技术点。

数据一致性保障:数据一致性保障主要解决分布式文件系统中多副本和缓存等在数据存储与访问过程中的一致性问题,通过构建数据一致性模型、进行数据一致性校验等方式,保障数据在存储和访问过程中的一致性,在提升数据访问性能的同时确保数据存储和访问的正确性。一般包括一致性协议优化、一致性检验等技术点。

高并行读写优化:高并行读写优化用于提高分布式文件读写的并行化水平,最大化提升分布式文件系统下的数据访问效率。一般包括分布式数据访问缓存管理和调度算法优化、IO 算法优化和合并 IO 等技术点。

分布式散列与动态均衡:分布式散列与动态均衡实现分布式文件系统下高性能的数据块定位,提高数据访问性能,以及数据块的迁移和再平衡,提升分布式文件系统的稳定性和可持续服务能力。一般包括基于一致性哈希的数据块索引管理、动态数据再平衡等技术点。

存储高可用:存储高可用通过数据多副本技术、状态自检测和自修复、核心服务分布式部署等技术手段,实现自动检测分布式文件系统中的各种错误和失效,并且在文件系统出现错误和失效时可自行进行多副本间的数据修复,最终持续向用户提供正常的数据访问服务。一般包括可配置数据多副本、数据自恢复及自维护等技术点。

海量小文件高性能存储访问:海量小文件高性能存储访问主要采用小文件汇集成大文件进行存储、细粒度二级索引管理等技术,实现在现有分布式文件系统的基础上,扩展对海量小文件的存储与访问的能力,同时解决小文件的随机读写问题,大大提高分布式文件系统对海量小文件的存储访问效率。

Coherence 在可靠的、高度可伸缩的对等集群协议之上提供了复制的、分布式的(分区的)数据管理和缓存服务。

Coherence 不存在单点故障,当某台服务器无法 *** 作或从网络断开时,它可以自动且透明地进行故障切换并重新分布它的集群化数据管理服务。

如果是没有任何电脑基础的话,建议还是先看点计算机基础方面的资料,要不然直接学编程的话,理解起来会有所偏差,而且事倍功半,得不偿失。

正所谓磨刀不误砍柴工,首先要做好准备工作,就是先要获得一定的计算机基础知识。

建议先了解一下计算机的发展历史,这个阶段可以看看《计算机科学概论》,了解一下大体的情况。

然后了解一下编程语言和软件的发展历史,这些资料网上多的是,取之不尽用之不竭。

接下来就是了解java语言的历史了,这个相对没多少内容,网上也很多资料。

上面的是准备过程,那些基础知识只要了解即可,并不需要花太多时间去记忆。

如果感觉自己准备得差不多了,下面就可以开始真正学习java了,这期间如果遇到不懂的知识依然可以上网查,或者自己找资料。

对于Java的初学者来说,如果找一本比较合适的入门教材的话,完整地介绍Java的语法、面向对象和主要的API核心库等知识,那将对学习起到相当的促进作用。

首先推荐要看的是《21天学通Ja va 2》《循序渐进Java 2教程》《Java2从入门到精通》等书看起来比较浅显易懂,将Java的基本只是都涉及到了,使你在很短的时间内掌握Java的基本内容。

看完这这本书之一以后,你就想对Java全面深入的学习,现在向你推荐《Java大学教程》《Java 2编程指南》等书,这几本书对Java的语法、面向对象的知识和API函数库等介绍的比较详尽。让你能够比较熟练的使用Java来编程,解决一般的问题。

最后推荐的是《Java2核心技术》,这本书主要讲述了Java的核心技术也是J

ava的难点之处,具有很高的参考价值,无论是Java的初学者还是Java编程老手,都能从此书受益。

以上主要针对J2SE的学习进行讲述的,Java主要有J2SE、J2EE、J2ME三个部分,J2SE是基础,但是J2EE用得最多 属于Web开发技术

关于J2EE,以下是JDon的学习建议:

1 学习web基本技术

>

以上就是关于hadoop重启后 分布式缓存文件还在么全部的内容,包括:hadoop重启后 分布式缓存文件还在么、缓存系统中的主要使用的数据结构是什么、分布式存储相对于单机存储的挑战是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9322123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存