优化的最大敌人,是反向优化。
这次的小组作业还是挺费事费时的,虽然我也还没有做到满分,但是这两天的一些尝试还是值得记录一下的,也算是给大家提个醒。一个很深的感触:捷径就是把该走的该经历的都过完,想歪门邪道一步登天的,往往都是绕远路。
这部分的任务可能是这次作业我做得最不好的地方,主要是因为没有在动手前设计好整个流程思路。因为时间紧,没有仔细分析问题和情境,但最终欲速则不达,像无头苍蝇一样试验各种方法出各种差错。盲目乐观和照搬 MySQL 部分的实现思路(我负责 HBase 部分),遇到问题之后依靠『侥幸』而不是『思考』来解决问题,实在是大失水准。
具体来看,主要有:
时间再紧也要谋定而后动,战略偷懒只会导致战术回旋空间变小,最终导致各种『无用功』。
原先使用 Amazon EMR 来搭建 HBase,主要有几个问题:
所以后来选择使用 Cloudera 来搭建自己的 Hadoop 框架平台。因为老师没有给出太多相关的资料,基本上就是一边看着文档,一个坑一个坑踩过来的。虽然没有 Amazon EMR 这么简单粗暴,但是后来看到性能明显提升,也就值得了。总的来说有以下的感觉:
最后就是想要强调监控数据的重要性,如何挑选需要的数据,如何去分析这些数据里面都有门道,要好好学习。
忽然想到这么一句话
按照大多数人数据库设计和代码实现的糟糕程度,根本轮不到拼参数
像我这样的初学者,往往过分夸大了参数的重要性,只有当系统达到了瓶颈,然后对应去调整相关参数才是有意义的。按照我之前的做法,既不知道问题在哪,更谈不上硬件的充分利用,就盲目根据网上的教程来进行『优化』,所做的基本都是『反向优化』。
所以这个时候搜索相关网页以及请教同学都是非常有帮助的,有了大致的方向会好很多,不然在一无所知的情况下真的很容易病急乱投医。
不同参数的设置一定要弄清楚具体代表什么,什么时候需要改,改了会有什么影响这一系列问题之后,再进行修改测试。
总的来说还是学到不少东西的,以后早些开始,继续努力。