CSDN圈子里大牛太多,作为一名90后,我只是想在这里留下自己每一个成长的脚印。也许当我老了,抑或N年以后再回过头来看看自己年轻时的足迹,一定别有一番感触!此篇谨献给一直都在拼命努力的自己!
一直在学习OS的相关知识,但学的一直都是理论,读了几遍《Modren Operating Systems》,以及《操作系统之哲学原理》和《深入理解LInux内核》,对OS算是很有感情吧。再加之老师建议让我自己去写一个OS,所以我就萌生了自己写一个OS的念头,当然只是一个轻量级的小 OS,只能实现最基本的功能,像多任务这种貌似比较高级的东西也可以写出一些。由于最近比较忙,一时没办法一一写出具体的步骤,今后想通过CSDN
blog 把自己的开发历程记录下来。主要是借鉴《30天自制操作系统》一书,但是也会加一些自己的思考在里面,以及相关知识的介绍。如果想跟我一起学习的小伙伴可以关注下我的动态。而该OS的开发主要是由汇编和C来实现。
再说说自己的兴趣吧。我大概花了一年多的时间去学习了云计算与大数据方面的东西,每天都会读几篇三大学报上的相关论文,坚持下来真的收获颇丰。现在自我感觉对云计算已经有一个相对准确的定位,而对于paas层中所面临的大数据存储与处理问题,自己也做一些研究。特别是利用Hadoop对大数据进行存储和处理。而如何有效的存储和处理海量数据这也是当下云计算所面临的主要问题之一。我认为开发性能卓越的分布式集群框架,和数据安全性研究是当下较为紧迫的问题。而如今已有的分布式计算框架只能有效应用某些领域,这使得大数据存储和处理受到限制。而我个人觉得以后的分布式计算的发展方向应该是定制化,不同的领域中需要特定的框架来解决,只有这样才能成倍提升处理的效率。虽然云计算现在只是在初级发展阶段,但已经凸显出其旺盛的生命力。所以,有效的去完善已有的框架也是很有意义的!
再来进一步谈谈hadoop吧。Hadoop是海量数据处理的平台,里面包含了很多个子项目,其中HDFS(Hadoop Distributed File System),MapReduce,Hbase为主要成员。先说HDFS,它是Google File System的开源实现,区别于一般的FS,它可以有效的实现海量数据的存储与管理,而无需借助DBMS这样的工具。HDFS具有高可靠性(多副本机制)和高扩展性等特点。集群中有一个节点作为Namenode管理着整个集群中所有节点的元数据。而集群中其他剩余的节点就成了Datanode,用于数据存储。其中数据都是按块存储,默认的块大小的为64MB。现如今HDFS主要面临的性能问题是单节点性能瓶颈,由于Namenode服务器的存储和计算资源都是有限的,所以导致了这个瓶颈。一般解决的思路都是增加Namenode节点的个数来实现,但是这样必然造成Namenode之间复杂的通信和同步机制。hadoop为处理大数据而生,对于小文件就没有那么好的性能,虽然它有自带的小文件处理策略,通过将小文件合并成大文件来实现,但是整体来看还是不容乐观。所以本人提出了一种基于索引机制的小文件处理策略,通过将Namenode节点部分功能下放来减缓单节点瓶颈,但是很多审稿专家不认可,说没有这样的说法,功能下放会使得datanode节点出现错误。我觉得需要权衡增加Namenode节点和Namenode节点部分功能下放之间的实现代价,而不是没有就否定。Mapreduce就是一种分布式并行计算框架,主要由Map函数和Reduce函数组成,Map将若一个完整的job切分成若干个task。其中负责任务分配的节点叫做JobTracker,
而用于计算每一个Task的节点叫做TaskTracker。在Mapreduce中主要面临的问题是工作级调度和任务级调度,工作级调度主要是面向客户机提交的多个job,hadoop默认的是基于低级队列的先进先出的调度算法。而最主要的问题是JobTracker实现的任务级调度,由于每一个任务都需要JobTracker通知TaskTracker来取任务,这需要耽误一定的时间。而且它们用心跳机制来实现通信,控制信息也包含其中,所以时延较长等等。对于Mapreduce有很多种优化策略,我在《计算机学报》上看的一位南大博士写的一篇论文,感觉比较好。他是用修改代码来实现,第一将JobTracker分配任务改为TaskTracker自动取任务,第二将控制信息从心跳机制中剥离出来。此外,由于各个数据节点处理任务的时候会出现掉队的现象,所以haodoop自带有推测执行算法,用落后同类节点20%来判断掉队者,随后启动一个备份节点同时进行处理,哪一个先结束就杀死另一个。但是在异构环境下,由于计算机点之间的差异性较大,hadoop固有的推测执行效率低下,所以本人也提出了一种异构环境下Hadoop推测执行算法,可以有效提高异构环境下推测执行的性能。最后提一下Hbase,它是google
bigtable的开源实现,主要是基于列的存储结构化和非结构化数据的分布式数据库。(由于时间紧迫,没有好好梳理,基本上是来啥写啥,小伙伴们莫怪)
最后谈谈我的规划吧,以后一直想做体系结构方面。我时常在想能否在正真意义上去突破冯诺依曼体系,也许这个想法就是我选择的目的吧!我会努力去做,至于结果只要自己勇敢去追求了,也就该看淡了!希望自己每一天都能离梦想更近一步。