zoukankan      html  css  js  c++  java
  • 某大数据项目感想留记

    一、项目名称

    XXXX平台大数据改造

    二、开发周期

    2016年3月 - 2016年11月

    三、从个人视角看团队

    1)   值得保持的优点

    • 团队氛围融洽、交流通畅。
    • 团队构成比较合理。年轻人技术强力,老人能够把控项目方向。
    • 遇到问题及时沟通,群策群力解决问题。
    • 有吃苦耐劳的精神,每个人都抱有很高的责任心。能顶住持续高强的压力。
    • 公司大环境给予的支持力度大,从技术、工程、到后勤保障都值得称赞。

    2)   仍需要改进的地方

    • 需求管理:

    客户提出来的需求比较零散,需要整理入册,安排优先级。应对其状态进行追踪。保持与客户的互动。

    • 单点作战:

    每个人担当的任务没有其他人可以分担,一旦出现问题,项目将受到较大影响。

    • 质量管控:

    由于持续高压,导致程序质量多少存在一些问题。

    大数据项目的测试手段比较落后,也是一个对质量影响比较大的因素。

    • 架构风险:

    整个项目的技术架构经历了很多次的迭代,给予项目带来了极大风险。

    虽然侥幸过关,但是,这种框架上的持续变动确实需要想办法避免。

    应尽量在项目前期,提出多种解决方案,采取并行研发的方式来寻求降低风险。

     

    四、从项目看自己

    XX项目虽然有惊无险的顺利过关了。但是,我个人在参与整个项目的过程中,却一直有一种莫名的“恐慌感”,最近也一直在想这种恐慌来源于何处。可能来自于以下几点吧。

    • 对个人技术功底的不自信。多年外包的经验很难在技术上给我带来多大的自信。
    • 对新技术稳定性存的不信任。
    • 久久未能得到客户的认可时,对项目未来的担忧。
    • 一直持续追赶的状态,安全感被逐渐消磨。
    • 有些技术问题从表面上看是解决掉了,但是并没有理解其中的“道”。

    虽然项目赢得了阶段性的胜利,但这些恐慌在一定时间内将一直伴随着我。

    希望能够逐渐适应这种节奏,把这些恐慌扼杀,带着节奏去完成今后的项目。

    五、项目优化策略

    • 资源隔离:

    将耗费性能的处理隔离出来,单独占用资源,以防止资源被其他处理抢占。

    • 热点数据:

    将经常访问的数据形成热点数据区,以加快查询速度。(HBase Bucket Cache)

    • 数据分流:

    增加后置资源利用率,将一部分企业放置到后置集群进行处理。

    • 采用SSD

    实践证明SSD盘可以非常明显的提高读写速度。

    • 批量写入:

    数据写入数据库的处理,尽量使用批量写入的方式。

    • 展示分离:

    展示页面所使用的数据与永久持久化的数据可以分离开,以提高展示的性能。

    六、大数据入门策略

    XX项目是我第一个国内的项目,也是我经历的第一个大数据项目。

    自己技术功底相对薄弱,从零基础到给项目提供战斗力还是经历了比较痛苦的过程。

    比较想分享的是自己学习大数据的从0到1的这个过程吧。

    • 认识大数据

    首先要知道大数据的定义,知道大数据的产生和意义、大数据能解决什么问题。

    • 了解大数据用到的技术

    这里的了解,只是知道有这么一个技术而已。不需要对技术有更深层次的了解。

    从以下几个方面对真个技术生态圈有一个概念上的认识即可。

    • 编程语言
    • 展现技术
    • 数据存储
    • 处理框架

    (机器学习、数据挖掘等没有接触)

    • 从必备基础技能学起

    基础建设决定上层建筑,在进入项目之前需要在基础上下功夫。如:

    • Linux命令
    • Shell编程
    • Java基础
    • 大数据词汇(DB、ETL、DW、OLAP、DM、BI等)
    • Git用法
    • Maven用法
    • 从Hadoop入门

    大数据技术更多是的是采取分布式计算来解决海量数据的计算。而Hadoop是大数据技术领域中比较代表性的计算框架,技术比较成熟,其中的MapReduce是比较容易上手,非常适合理解分布式的“分而治之”的理念。

    学习方法无碍是:看视频、看书、动手实践、解决问题、再次看书。

    同时,需要多余身边的优秀人才交流,从他们那里吸收大数据的思维方式。

    • 学习大数据必会技能

    大数据的技术错综复杂,更新迭代也比较快。个人感觉下面几个应该属于必会技能了。

    目前我还没有全部解除到,希望以后能逐渐接触。

    【计算框架】

    • Hadoop(离线处理、Yarn资源管理)
    • Storm(流式计算)
    • Spark(基于内存的分布式数据集、流式计算等)

    【数据存储】

    • HBase
    • MongoDB
    • 内存数据库(如Redis)

    如果将大数据的相关技能比作一颗大树,那么整个技术生态可以按照下面这样来比喻吧:

    • 水分       →     数据源
    • 根茎       →     ETL(数据抽取、转换、加载)
    • 树干       →     数据仓库
    • 枝叶       →     展示

     

     

    • 深入了解分布式思维

    传统的计算机技术大部分都是基于单点完成的,也就是一台计算机就可以完成。

    计算量比较大的时候,就去想办法提高计算机的硬件性能。

    而大数据由于有5个V在那里,所有,更多的采用分布式来完成计算和存储功能。

    也就是“分布式”处理了。那么,分布式处理和传统的处理方式在思维方式上有什么区别呢?

    彪哥说:“万事万物道理都是相通的”。

    我时常将“分布式计算”与“项目管理”进行比较,也确实从中获益不少。

    ------------------------------------

    一个人是一个独立单位,可以独立完成量比较小的任务。

    当任务比较多、大、复杂的时候,就需要多人协作完成,也就是团队了。

    一个团队的构成比较复杂,不同的协作方式,可以解决不同的场景,

    当然,不同的协作方式也代表效率、风险、职能等多方面的不同。

    假如一台计算机比作一个人。

    一台计算机完成的任务有限,当大量的任务的时候,就需要多台计算机来协作完成。

    同样,多台计算机同时处理一个作业的时候,就涉及到协作策略、节点职能、沟通策略、风险应对等多方面的考虑。

    比如从以下几点来看:

    ①     项目经理不应该成为团队的瓶颈。(Hadoop1.x进化到Hadoop2.x的原因)

    ②     资源需要备份,个人问题不能影响团队。(单节点故障问题)

    ③     团队之间的高效沟通。(节点之间的通讯策略)

    ④     数据存储策略。(是放在脑袋(内存)里,还是写在本(磁盘)上)

    ⑤     资源分配方式。(Yarn资源分配)

    ------------------------------------

     

    七、总结

    保持学习的心态。

    在技术上不要掉队。

    为项目提供即战力为先。

    保护革命的本钱(身体)。

    持续推演个人职业规划。

    多与年轻人接触。

    ※由于有项目保密协议,无法透露项目的具体细节,以及调优的相关参数。

    也不敢透露项目的架构设计,仅留此博客用来自我总结。 

    --END--

  • 相关阅读:
    Cardiogram
    Increasing Speed Limits HDU
    Beaver Game CodeForces
    C++LeetCode:: Container With Most Water
    C++ leetcode::Reverse Integer
    C++ leetcode::ZigZag Conversion
    C++ leetcode Longest Palindromic Substring
    C++ leetcode Longest Substring Without Repeating Characters
    Faster RCNN
    C++ Leetcode Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/quchunhui/p/6083244.html
Copyright © 2011-2022 走看看