三天100元从零开始搭建Hadoop集群

    阿法狗把李昌镐都干掉了,不管是图形图片处理集群还是文字文本处理集群都将成为IT公司新一代的基础设施。公司准备先建立文字文本处理集群,即选择阿里E-MapReduce产品,快速搭建文本大数据处理系统,谋划公司新一代大数据处理架构,但是,初级阶段,不想为Hadoop的底层维护花费时间,集群维护一个工程师少说也要5K以上吧(四级城市),还有硬件和电费等等,公司决定先跑一个样本集群,再做下步谋划,以上也是很多公司对集群的态度吧。

   创业阶段钱是精打细算了,阿里集群可以按时付费,最低每小时3.88元,就当每小时3.88元的学习费用吧,因此,学习速度要快呀,集群一开,每小时3.88元的学费不断花费哦。今天就和同学分享,我是如何用三天,一百元以内的学费,高效率地搭建集群,且让简单的英文,中文分词程序在自己的控制下在集群中跑起来的。

    1.钱袋子准备好:阿里需要你账号资金100元以上,不然,就不让你学习了。

    2.理解阿里E-MapReduce体系

    1)整个阿里云我们常见到的是ECS,就是在庞大的硬件设施上,根据用户需要虚拟出来的一台台计算机,他们是建立在实体CPU,硬盘,内存等之上的,可以随时释放,也可以临时组合。

    2)集群就是跑在这些ECS之上,因此,同学想租几台ECS自己搭建Hadoop估计也是没有问题,显然,我是没有这个兴趣,阿里的同学也是把在ECS上搭建集群的过程自动化了。

    3)当然,若是仅仅依靠ECS集群,有个问题,即运行的记录和数据都放在集群上,随着集群的释放,运算数据也丢失了,在商业环境中,可以让集群开几个小时,再释放,不是一直要启动一个集群,若全天候启动,每小时3.88,每天24*3.88=93.12,每月93.12*30=2793元,心疼呀,当然,包月省电,但是很多时候还是不一定要全天候运行,还有,扩大集群后,也要释放。不过,阿里倒是很厚道,就是有了对象存储OSS,这个就相当于存储空间,你采购阿里云上的OSS,集群就可以把输入和输出数据,放在OSS这个大硬盘上,这个大硬盘是很便宜啦,1TB每月144元,白菜价格啦,因此,建立集群前一定要买个大硬盘,便于把自己集群运算的结果放在这个大硬盘上。

    4)创建集群后,你就是主人了。当然,要理解Hadoop集群结构了。集群至少有两个“孩子”,一个是老大你可以通过公网访问它,比如,把代码用SSH等放在相关目录,当然,你也可以把程序放在大硬盘OSS上,设置后让集群来取,当然,要深入理解集群,还是要踏入自己孩子在房间看看为好。在创建集群后,可以看到Master机器的公网地址,你就当一台ECS的主机就好,登录可以做相关操作,当然,另外一个孩子是不要我们控制的,集群自己管理,是内部地址。所以,需要安装一个常见的SSH登录工具。

    5)集群的大致规划:先规划OSS,在上面建立文件夹,放置自己集群计算内容,我们还是以分析一篇英文小说中的词汇状态,即英文切词为例吧,这个在阿里的手册中有代码,这也算是集群的“hello world”程序,比如,在OSS上建立Input文件夹,当然,还有集群的输出文件夹Output(注意:输入文件夹可以反复使用,输出文件夹不能是已经存在的目录,即阿里认为,输出的东西是花钱的很宝贵呀,每次输出,都要是全新的文件夹,保证客户花钱的结果不能被弄乱,因此,每次集群运行的时候,我们都要给集群指定输出的文件夹,我一般采用Output/2014-4-25-2模式建立输出文件夹);有了语料,程序,有了输出文件夹,集群就可以开始工作了,并把输出结果放置在相关OSS硬盘中;这样,我们就可以省钱了,比如,创建一个集群,并打开相关作业,再一定时间后关闭,安心下班睡觉,钱不会漏呀!

    6)集群运行机制的大致理解:相关Hadoop资料,多如牛毛,我也没有过多时间理解,但是,我们应该对集群的运行有个大致理解。

    —集群购买启动等待你的配置

    —配置作业:一个作业(任务)至少,要给集群OSS设置,包括运行的JAVA程序包的位置,输出的文件的位置,等等参数吧

    —启动作业(任务),集群开始运行

    —集群运行,Master机器,肯定先看看运行的OSS配置变量,从OSS下载JAR包,还有计算的数据,比如,英文小说的数据文件,这些文件再根据一定规律分配给子节点,在启动集群程序运行

    —集群运行过程中,若有什么情况,肯定报告给控制台,我们点击获得集群的运作状态

    —集群作业结束,并返回运作数据到OSS

    —我们可以在Output的相关目录下看到结果

   3.我的第一个E-MapReduce程序:2009年后,本人就没有编写JAVA代码了,离开码农岗位了,这次也不想过分打扰工程师,主要想让自己重新体验下JAVA工程,再为下步集群规划做准备。因此,在此过程中,自己动手,花了点时间。

   1)本地打包程序出错:在本地安装了多年不见的Eclipse(还是很熟悉的界面),从阿里E-MapReduce文档中下载代码,开始编译Word Count,兴冲冲地把JAR包上传到OSS,并启动集群,结果是类没有打包好,汗呀,确实不会打包了,关键是阿里文档中有打包命令行,我就是按照这个模式打包的呀。

    2)问了阿里同学,说是要在Hadoop集群环境中打包。晕倒,我能够在本地安装,配置好Hadoop集群,我还到阿里来购买吗?显然,这个应该是把代码直接上传到集群主机(用SSH),并在集群上打包呀。具体打包的过程,还是阿里文档中的打包过程。这边折腾我几个小时。(第一天就这样过去了,我是周六下午4点开始的,晚上11点下班,除了启动集群,看到我的JAR类没有打包好外,当然,还花费了块30元集群费用呀,好像就没有其它收获了,当然,阿里同学很给力,说第二天给我在集群上打包,并给我过程截图,汗呀,JAR包不会打了)

   3)(周日,阿里同学传来打包截图),重新创建集群,根据阿里同学的截图,我在集群主机上打包好Word Count,再下载下来,再传递到OSS上,再启动集群,成功啦!可以看到分词的结果(这个过程当然是一个小时内了,有关集群打包的过程截图在附件中)

    4.我的第一个E-MapReduce控制程序:由于公司现在计算量不大,准备定时开集群,定时释放,这样每天的工作,不该都由人工操作呀,阿里还是不错的,允许你写个JAVA程序,运行在公司办公室或者其它服务器上,定时给阿里云发指令,让其自动创建集群,定时释放等等,实现全自动化的作业,这个当然是重要的控制程序了,阿里手册中都有代码。在和阿里团队互动中,我就提出,用户更加需要工程文件,而不是代码,代码我们一眼就看懂,但是,用这些代码建立工程就痛苦了,即代码和工程之间还是有距离的,用户需要高效率工作,基于工程快速实现目标,因此,这些自动化程序都是阿里同学给工程代码了,很快完成了。(周日,第二天就这样过去了,顺利运行集群,并创建了集群自动化控制程序,还是花费30元呀)

    4.我的第一个中文分词程序:阿里给的是英文分词程序,但是,公司需要中文分词,就寻找了一个开源的中文分词程序,这个就是第三天的任务,开始脱落阿里的案例代码,运作自己的程序。

   1)第三天任务,不仅有自己的JAR包,此JAR包还有一个外接的JAR包,这个配置有点问题,开始时候,把外部JAR包放在Master的root目录,结果,Hadoop权限不够,运行不了。

   2)后来把JAR包放在Home的目录表,Hadoop就可以取到这个外部JAR包了,程序是运行起来了。

   3)为了测试集群的能耐,我下载了100多M的中文语料,但是,一直失败,后来,我想还是放小目标,用集群去分析《红楼梦》吧,终于成功了。(完成第三天的任务)

    经验之谈:1)要对阿里云,集群有比较清晰的认知,之前,我们就用了ECS几年了,还有OSS都在用,因此,没有用的同学,要把他们弄清;2)要对集群的运作机理搞清楚,包括OSS和集群的关系,集群的运作过程,不然,在配置中会遇到问题;3)代码层面就是像阿里同学要工程,而不是代码;4)加入他们的互动群,有问题提交工单,不要一个人孤军奋战,这个也是商业购买的优点,若让自己一个人去整个Hadoop集群,是以周为代价的时间。

    其实,自己体验后,公司的集群规划,研发计划都很清楚了,如何省钱,如何提高效率都知道了。

     

  


   

    

   

上一篇:[Linux Shell学习系列十四]sed和awk-1.sed编辑器基础


下一篇:Solr4.7.1中配置中文分词器