ビッグデータは学ぶ必要がありますか?

ビッグデータは学ぶ必要がありますか?多くの人が私にこの質問をしてきました。あなたがすべてに答えるたびに、彼らはあまりにも一方的な話という感じではなく、常に、適切な機会はこのようなものを書き始めるまで、内容の良い要約に行くことに。ビッグデータは、近年の産業の台頭、長年にわたって多くの反復による技術の急速な発展は、より成熟したとなっている、と新しいものが出現している、あなたが競争力を維持したい唯一の方法は、学習を維持することです。

マインドマッピング

以下は、コンテンツが分散コンピューティングのクエリを含むいくつかの大規模な作品、分散スケジューリングと管理、永続ストレージ、ビッグデータ一般的に使用されるプログラミング言語とはるかに、それぞれのカテゴリーに分けられ、マインドマップの私の一種でありますこのような大規模なデータプログラムなどのオープンソースツール、多くの下類人猿は、物事を憎むのが大好き非常に厳しい戦いを投げることです。

学習のビッグデータの開発は難易度の特定の学位を持って、最初のJava SE、EEは、約3ヶ月かかります学習、一般的にはJava言語の基礎を、学ばなければならないゼロベースのエントリ;その後、主にHadoopを学ぶために、ビッグデータ学習技術システムを入力し、デジタル606のデジタル859のデジタル705シェアビッグデータの学習リソース、明確なルートを学習し、学習を導くために兄がある:ゼロベースの学習からなどスパーク、嵐は、ケリグループビッグデータに堪能です。

1491039-20180921155211499-588474554.png

ビッグデータは、言語が必要です

ジャワ

Javaは(もちろん、私も大きな仕事転送を見てきた絶対的な製品ではありません上で最もビッグデータベースのプログラミング言語、ビッグデータ開発の大部分は、これらの年の私の経験によると、私はJave Web開発ジョブの転送からのものであった連絡と言うことができますデータの開発、日の逆)。

  • まず、理由はビッグデータ・コンピューティングの性質のストレージに簡単にアクセス可能なデータ、クエリの膨大な量以上のもので、バックエンドの開発シナリオデータアクセス、大量のではありません

  • 多くの大規模なデータ・コンポーネントは、などHDFS、糸、HBaseの、MR、飼育係として、Javaであるため、2番目は、Java言語能力、そして自然の利点である、あなたは深く勉強したい、それぞれの生産環境を埋めるために介入ピットの種類し、最初のJavaのソースコードをかむことを学ぶ必要があります。

それはソースところでを食べに来るとき、初めは確かに、コンポーネント自体の必要性が難しいことや、言語を開発するより深い理解を持っているあなたは、問題を解決するために、ソースコードを見るために使用される、この段階を通過したので、実際には、ゆっくりと完璧になりますあなたは、ソースコードが実際に香りを見つけるとき。

スカラ

scala和java很相似都是在jvm运行的语言,在开发过程中是可以无缝互相调用的。Scala在大数据领域的影响力大部分都是来自社区中的明星Spark和kafka,这两个东西大家应该都知道(后面我会有文章多维度介绍它们),它们的强势发展直接带动了Scala在这个领域的流行。

Python和Shell

shell应该不用过多的介绍非常的常用,属于程序猿必备的通用技能。python更多的是用在数据挖掘领域以及写一些复杂的且shell难以实现的日常脚本。

分布式计算

什么是分布式计算?分布式计算研究的是如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多服务器进行处理,最后把这些计算结果综合起来得到最终的结果。

举个栗子,就像是组长把一个大项目拆分,让组员每个人开发一部分,最后将所有人代码merge,大项目完成。听起来好像很简单,但是真正参与过大项目开发的人一定知道中间涉及的内容可不少。

比如这个大项目如何拆分?任务如何分配?每个人手头已有工作怎么办?每个人能力不一样怎么办?每个人开发进度不一样怎么办?开发过程中组员生病要请长假他手头的工作怎么办?指挥督促大家干活的组长请假了怎么办?最后代码合并过程出现问题怎么办?项目延期怎么办?项目最后黄了怎么办?

仔细想想上面的夺命十连问,其实每一条都是对应了分布式计算可能会出现的问题,具体怎么对应大家思考吧我就不多说了,其实已经是非常明显了。也许有人觉得这些问题其实在多人开发的时候都不重要不需要特别去考虑怎么办,但是在分布式计算系统中不一样,每一个都是非常严重并且非常基础的问题,需要有很好的解决方案。

最后提一下,分布式计算目前流行的工具有:

  • 离线工具Spark,MapReduce等

  • 实时工具Spark Streaming,Storm,Flink等

这几个东西的区别和各自的应用场景我们之后再聊。

分布式存储

传统的网络存储系统采用的是集中的存储服务器存放所有数据,单台存储服务器的io能力是有限的,这成为了系统性能的瓶颈,同时服务器的可靠性和安全性也不能满足需求,尤其是大规模的存储应用。

分布式存储系统,是将数据分散存储在多台独立的设备上。采用的是可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

1491039-20180923163220973-309243746.jpg

上图是hdfs的存储架构图,hdfs作为分布式文件系统,兼备了可靠性和扩展性,数据存储3份在不同机器上(两份存在同一机架,一份存在其他机架)保证数据不丢失。由NameNode统一管理元数据,可以任意扩展集群。

主流的分布式数据库有很多hbase,mongoDB,GreenPlum,redis等等等等,没有孰好孰坏之分,只有合不合适,每个数据库的应用场景都不同,其实直接比较是没有意义的,后续我也会有文章一个个讲解它们的应用场景原理架构等。

分布式调度与管理

现在人们好像都很热衷于谈"去中心化",也许是区块链带起的这个潮流。但是"中心化"在大数据领域还是很重要的,至少目前来说是的。

  • 分布式的集群管理需要有个组件去分配调度资源给各个节点,这个东西叫yarn;

  • 需要有个组件来解决在分布式环境下"锁"的问题,这个东西叫zookeeper;

  • 需要有个组件来记录任务的依赖关系并定时调度任务,这个东西叫azkaban。

当然这些“东西”并不是唯一的,其实都是有很多替代品的,我这里只举了几个比较常用的例子。

说两句

回答完这个问题,准备说点其他的。最近想了很久,准备开始写一系列的文章,记录这些年来的所得所想,感觉内容比较多不知从哪里开始,就画了文章开头的思维导图确定了大的方向,大家都知道大数据的主流技术变化迭代很快,不断会有新的东西加入,所以这张图里内容也会根据情况不断添加。细节的东西我会边写边定,大家也可以给我一些建议,我会根据写的内容实时更新这张图以及下面的目录。

关于分组

大きなデータパケットの上記成分のことができ、他のグループの一部のコンポーネントであるかのように、プログラム猿強迫性障害があり、特にとして、実際にはより多くのもつれである、と私は、あまりにも多くのサブグループは、混乱を見ていきますしたくありません絵の上にグループ化することはほとんどない主観数になります。グループ化は確かに絶対的ではありません。

たとえば、次のようなメッセージキューは、一般的に一緒にカフカや、HDFSなどの他のデータベースやファイル・システムではありませんが、彼らはまた、分散永続ストレージの機能が装備されているので、彼らが上まとめます;そこopenTsDBこのタイミングデータベースは、データベースが実際のHBaseに基づいてアプリケーションだけで、私はこの事はとても主観的に言えば、より多くのクエリに集中して保存されただけでなく、これではなく、店舗自体のやり方だと思うと述べましたこのカテゴリのほか、OLAP「分散コンピューティングクエリ」ツールでも、このグループに配置されます。

多くのですが、同じような状況では、我々はまた、議論の下に異議があると言うことができます。

目的

我々は、すべてのプログラムの猿が競争力を維持したいと私たちは学び続けるために持っている必要があり、ビッグデータ技術が進んでいることを知っています。これらの記事を書くの目的は、比較的簡単であると第二、私は何人かの人々がビッグデータを理解するために学ぶのを助けるために願っています。1ノート、知識をカーディングとしてすることができます


おすすめ

転載: blog.51cto.com/14342636/2416873