[電源を入れる]ビッグデータエンジニアは何を学ぶ必要がありますか?

著者:陳の
リンクします。https://www.zhihu.com/question/25542750/answer/493835356
出典:知っているほとんど

実際には、これはあなたが/最適化/運用・保守/監視、ビッグデータの開発/設計/アーキテクチャ、データ分析/マイニングを構築するために、3つのビッグデータプラットフォームを伝えたい方向です。、良い見通しである、容易なより多くのお金を私に聞かないでください。
最初の大きなデータ4V機能について引っ張る:
大量のデータ、TB-> PBの
構造化、非構造化テキストのデータ型の範囲、ログ、ビデオ、写真、場所など、
高い商業的価値が、この値は、大規模な必要ですデータ上で、データ分析と、より迅速に行う学習鉱山機械を通して、
処理適時高く、大量のデータ処理要件は、もはやオフライン計算、それらに限定されません。
:さて、これらのビッグデータの形式的な特性、ビッグデータのオープンソースのフレームワーク、そしてより強く対処するためには、いくつかの一般的なリストする
ファイルストレージ:HadoopのHDFSを、タキオン、KFSオフライン計算:HadoopのMapReduceの、ストリーミング、リアルタイムの計算をスパーク:嵐、ストリーミングスパーク、S4、 HeronK-V、NOSQLのデータベース:HBaseの、Redisの、MongoDBのリソース管理:YARN、Mesosログ収集:水路、スクライブ、Logstash、Kibanaメッセージシステム:カフカ、StormMQ、ZeroMQ 、RabbitMQの分析は:ハイブ、インパラ、豚、プレスト 、フェニックス、SparkSQL、ドリルは、FLINKは、麒麟、ドルイドは、 飼育係のクラスタ管理とモニタリング:Ambari、神経節、Nagiosは、Clouderaのコーディネーション・サービスの分散
Managerデータマイニング、機械学習:MahoutのをSqoopのタスクスケジューリング:スパークMLLibデータの同期、Oozieは......
それを目がくらむ、そこに上記の30種類があり、ましてや習得し、すべて使用しますが、私は多くはないと思います。
個人的に私のために、主な経験は、第二の方向(開発/設計/アーキテクチャ)であり、そして私のアドバイスそれに耳を傾けます。
第一章:知人のHadoop
1.1は、百度とGoogleを学ぶ
に関係なく、あらゆる問題の最初の試みと独自の検索を解決します。
GoogleがBaiduのバーを使用し、乗り越え、より好ましいです。
選択肢の公式文書1.2参考
特にエントリーのためには、公式文書は、常に文書のための最初の選択肢となります。
私は、これは主に、係合知識、英語がライン上で即興であると信じて、私は立つことができなかった、最初のステップを参照してください。
それはHadoopの1.3を実行してみましょう
のHadoopは、大規模なデータストレージとコンピューティング血統、今やほとんどがオープンソースのHadoopビッグデータフレームワークと見なさまたはそれと非常に良好な適合性を頼ることができます。
Hadoopのについて、あなたは少なくとも以下れるかを把握する必要があります:
Hadoopの1.0、2.0のHadoop
のMapReduceは、HDFS
名前ノード、データノード
JobTracker、TaskTracker
糸、のResourceManagerを、ノードマネージャは
、独自のHadoopを構築し、それがアップ実行できるように、1段目と2段目を使用してくださいライン上。
インストールされている管理ツールを使用していない、インストールパッケージをインストールするには、コマンドラインを使用することをお勧めします。
また、:。Hadoop1.0はそれが2.0のHadoopで今、ラインを知っている
1.4のHadoop使用してみてください
HDFSのディレクトリ操作コマンドを、アップロード、ダウンロードファイルのコマンドは、MapReduceのサンプル・プログラムを実行提出;
オープンHadoopのWebインターフェースが稼働してジョブを表示するために、ジョブを表示ログインして実行します。
どこのHadoopシステムログを知っています。
1.5あなたは、彼らの原則を理解する必要がある
のMapReduceを:どのように分割し、征服するために、HDFS:、どのようなコピーでデータされ、最後に糸は、それが何ができるかである。最後に名前ノードはやっている。このResourceManagerを終わりにすることはやっている。
1.6自分自身を書くことMapReduceのプログラムは
WORDCOUNTプログラム(コピーでもOKです)、書き込み、およびHadoopのを実行するために、パッケージを提出するために、WORDCOUNT例に従ってください。
あなたは、Javaのではないでしょうか?シェル、Pythonはすることができ、Hadoopのストリーミングと呼ばれるものがあります。
上記の手順、お祝いの言葉を深刻に完了している場合は、片方の足はすでに入力されています。
第II章:より効率的なWORDCOUNT
2.1 SQLはそれを学ぶ
、あなたはデータベースは知っていますか?SQLは、あなたはそれを書くのか?そうでない場合、SQLそれを学ぶしてください。
2.2 SQLバージョンWORDCOUNT
WORDCOUNTの1.6では、あなたが書いた(またはコピー)数行のコードがありますが?
:私はあなたの外観与える
;(1)WORDCOUNT GROUP BY WordからSELECT Wordを、COUNT
ラインの数十、またはコードの行数百ものを必要とこれはSQLプログラミングの魅力である、私はこの1つを取得する必要があり、SQL処理分析にHadoopを使用します、便利、効率的な、親しみやすい、そしてより多くのデータがトレンドです。算出されたか否かオフラインでリアルタイムシステム、より多くの大型データ処理フレームワークを積極的SQLインタフェースを提供しています。
Hadoopののハイブ2.3 SQL
ハイブは何ですか?与えられた公式の説明は次のとおりです。
Apacheのハイブデータウェアハウス・ソフトウェアは読書が容易 、書き込み、および分散ストレージに存在する大規模なデータセットを管理し、SQL構文を使用して照会。
なぜハイブは、データウェアハウスのツールではなく、データベースツールですか?一部の人々は、基礎となるデータベースを使用して、データ・ウェアハウスは、論理的な概念であり、データウェアハウスを知らないかもしれない、データ・ウェアハウスは、2つの特性を有する:比較的安定し、最も包括的な履歴データ(質量)は、いわゆる相対的な安定性、ビジネス・システム・データベースを参照すると、データウェアハウスとは異なる、データはほとんど更新されず、削除されたデータ・ウェアハウスに一度、頻繁にデータを更新され、クエリの数が多いであろう。ハイブは、また、大容量データ・ウェアハウス・ツールのデータではなく、データベースツールのハイブが適し、従って、これらの二つの特性を有します。
2.4インストール構成ハイブ
インストール構成ハイブを完了するために、1.1と1.2を参照してください。ハイブは、通常のコマンドラインを入力することができます。
ハイブ2.5を使用してみてください
、1.1と1.2を参照してくださいハイブにWORDCOUNTテーブルを作成し、2.2 SQL文を実行します。SQLタスクは、単にHadoopのWebインターフェースを実行している見つけることができます。
SQLクエリ結果と結果はMapReduceの1.4で一貫性があるかどうかを確認します。
2.6仕事はハイブどのように
HadoopのWebインターフェイスは、MapReduceのタスクがあるのはなぜはっきりと書かれているSQL、参照してください?
ハイブ2.7は、基本的なコマンドを学習
テーブルを削除、作成するために、負荷データをテーブルに、データは、Hiveのテーブルをダウンロードし、
ハイブとコマンドの構文についての詳細を学ぶために、1.2節を参照してください。
あなたが続いた場合の最初の章の流れの中で、「ビッグデータは、初心者の言葉の発達に書かれた」第二のフル真剣に、あなたはすでに、次のスキルと知識を持っている必要があり、再び消え:
0とのHadoop2.0間の差を、
MapReduceの原理(またはその古典的なタイトル、1Gメモリのサイズ指定したファイルの10Gサイズ、統計最高10の数の単語の出現回数とどのようにJavaプログラムを使用する);
HDFSはデータの流れを読み書き; HDFSのPUTへデータ; HDFSデータからダウンロードし、
彼らは簡単なのMapReduceプログラムを書きます、問題を実行し、ログ表示を知っている;
;単純なSELECT、WHERE、GROUP BYおよびその他のSQL文を記述
ハイブSQLは、MapReduceの一般的なプロセスに変換し、
ハイブ一般的な声明:ローカルにダウンロードテーブル、パーティション、表データに、負荷データをテーブルをドロップ、テーブルを作成し、


上記の研究から、あなたが学んできた、HDFSのHadoopフレームワークが提供する分散ストレージである、それは使用することができます分散コンピューティングフレームワークのHadoopのMapReduceが提供される大容量データ記憶装置のために、それは、大量のデータの統計とHDFSの分析に使用することができます ハイブは、ハイブは、SQLインタフェースを提供し、Hadoopの上でSQLで、開発者は、シンプルで親しみSQL文の記述する必要が実行するために提出されたMapReduceに翻訳ハイブSQL、責任を。この時点で、あなたの「ビッグデータプラットフォームは、」これです:



そこで問題は、HDFSそれへのデータのどの膨大な量の、ありますか?
第3章:他の場所でのHadoop上のデータを取得し
、本明細書にも、データの収集、Hadoopの各データソースのデータの収集を呼び出すことができます。
3.1 HDFSは、コマンドPUT
の前に使用している必要がありますあなたの目の前でこれを。
実環境でコマンドを置くことは、通常使用するシェル、Pythonや他のスクリプト言語で、比較的一般的です。
推奨されるマスター。
HDFS API 3.2
HDFSにデータを書き込むためのAPIを提供し、彼らはHDFSにデータを書き込むためのプログラミング言語を使用し、コマンド自体もAPIを使用して置きます。
通常、HDFSにデータを書き込むために、より少ないプログラミングAPIを使用して、実際の環境では、他のフレームワークは、通常の方法をパッケージ化しています。たとえば、次のハイブINSERT文で、スパークsaveAsTextfileののように。
提案の原則を理解し、デモを書きます。
Sqoop 3.3
Sqoopは、Hadoopの/のようなハイブ、従来のリレーショナル・データベースのOracle / MySQLの/ SQLServerの間のデータ交換のための主要なオープンソースのフレームワークです。
ハイブSQLは、MapReduceのに翻訳のように、のような、Sqoopを使用すると、Hadoopのと他のデータベースとの間でデータの交換を完了するために提出した稼動のMapReduce、Hadoopのに指定するパラメータを変換します。
ダウンロードして、自分のSqoopを設定する(Sqoop1、Sqoop2より複雑なを使用することをお勧めします)。
一般的な設定パラメータとメソッドSqoopを特定します。
Sqoopは、HDFSからデータを同期するためにMySQLを使用して完了、Sqoopは、MySQLハイブテーブルから同期データを完了するために使用されます。
PS:その後の選択は、データ交換ツールとしてSqoopを使用して決定された場合、それはマスターに推奨され、そうでなければ、理解するために使用され、デモすることができます。
水路3.4
水路は、データ収集とリレーショナルデータベースの伝送に適していないため、「取得し、送信フレームワーク、」ので、大規模な分散ログ収集および送信フレームワークです。
ネットワークプロトコル、メッセージ・システムから水路は、リアルタイムファイルシステムログを収集し、HDFSに送信されます。
あなたはこれらのデータソースからのビジネスデータ、およびリアルタイムの収集を必要としているのであれば、あなたは水路の使用を検討すべきです。
水路をダウンロードして設定します。
常に水路追加データを使用してファイルを監視し、HDFSにデータを転送する;
PS:水路configureと、より複雑な使用、あなたは十分な関心と忍耐を持っていない場合は、水路をスキップすることができます。
3.5アリオープンソースデータXの
理由は、Hadoopのリレーショナル・データベース・ツールは、我々は現在、以前に開発されたデータXに基づいてデータ交換を使用しているため、非常に使いやすい、これを導入します。
あなたは私のブログを参照することができ、「異種データソース大量データ交換ツール-TaobaoデータXのダウンロード及び使用。」
データXは今3.0バージョンを持っている、それは多くのデータソースをサポートしています。
また、それより上の二次開発を行うことができます。
PS:利害関係者が勉強し、それを使用し、Sqoopとそれを比較することができます。
あなたが真剣にこの時点で、上記の研究と実践を満たす場合は、あなたの「ビッグデータプラットフォーム」次のようになります。



第4章:Hadoopの上のデータが別の場所を取得
のHadoop、HiveのとMapReduceの上のデータを分析するために使用することができた後、どのように収集されたデータのデータソースのHadoopに見えます。そして、次の質問は、他のシステムやアプリケーションに同期を完全にHadoopの分析からの結果が行く方法ですか?
実際に、本明細書の方法と基本的に同一の第三章。
4.1 HDFSは、GETコマンドを
ローカルでGET HDFS上のファイルに。習得する必要があります。
4.2 HDFSのAPI
。3.2と
4.3 Sqoop
3.3。
使用SqoopのMySQLに同期HDFS上の完全なファイル、Sqoop完全なデータハイブテーブルを使用するMySQLへ同期され、
4.4データX
。3.5では
、あなたが真剣に上記の研究を満たしている場合と、実際、この時点で、あなたの「ビッグデータプラットフォームは」次のようになります。


読者になっていた場合は、「ビッグデータは、初心者の発展に書き込まれ、その後、2」本格章IIIにおけるプロセスとIV消え、再び、あなたはすでに、次のスキルと知識を持っている必要があります完了します。
既存のデータを配置する方法を知っていますオフライン収集とリアルタイム取得を含め、HDFSに収集し、
あなたはSqoop(あるいはまた、データX)を知っているツールやその他のデータソースのHDFSの間でデータのやり取りを、
あなたはすでに水路は、リアルタイムログ収集に使用することができます知っています。
以前の研究から、ビッグデータプラットフォームのために、あなたはすでにHadoopクラスタを構築するための知識とスキルの多くを知って、収集したデータのHadoop、HiveのとMapReduceの使用に結果が他のデータソースを同期するために、データを分析します。
次の質問はハイブが、それは、資源の申請のMapReduceを実行するために開始する必要があり、ほとんどの場合、あなたは、特に低速、不幸な場所をたくさん見つけるでしょうデータの、明らかに私の少量をより多く使用し、来ました。
第V章:それに乗る、私のSQLの
事実は、我々は実行エンジンとしてのMapReduceハイブの背景の使用は、それが少し遅いであることを見出しました。
そのため、より多くのためのHadoopフレームワークにSQLは、私の理解によると、最も一般的な人気に応じて使用SparkSQL、インパラとプレストた。
半日またはメモリに基づいてこれらの3つのフレームメモリ、迅速Hadoopのクエリを分析するために、SQLインタフェースを提供します上のデータ。3の比較については、1.1を参照してください。
私たちは現在、以下、その理由をSparkSQLを使用し、おそらくそこにある理由として、SparkSQLを使用している:
スパークは、他のことを行うと、あまりにも多くのフレームワークを導入していない。
メモリのインパラの需要を過ぎますあまりにも多くのリソースを展開し、
スパークとSparkSQL 5.1
スパーク、SparkSQLは何であるとは何ですか。いくつかのコアの概念と用語集をスパーク。SparkSQLとの関係でどのようなスパークは、SparkSQLとハイブは関係どのようなものです。SparkSQLはなぜハイブよりも高速に実行します。
展開とSparkSQLを実行するための方法を5.2
スパーク展開モデルを?糸でSparkSQLを実行するには?SparkSQLハイブクエリテーブルを使用します。
PSは:スパークは、技術を習得することができるようになります短い時間ではありません、それはスパークの理解で提案され、あなたは、SparkSQLが開始ステップバイステップを開始することができます。
スパークとSparkSQLについて、を参照してください。
あなたが真剣に上記の研究と実践を満たしている場合、この時点で、あなたの「ビッグデータプラットフォーム」を次のようになります。

章VIを:一夫多妻制は、
その名前に誘惑されないようにしてください。実際に、私はデータの収集、複数の消費であると言いたいです。
実際のビジネスシナリオでは、特にいくつかの監視ログに、指標のいくつかの即時理解したい水路であるが、遅すぎるHDFSの分析からのログ、この時点から(リアルタイム計算上を、後の章を紹介します)買収が、水路は、HDFS上のファイルを使用して非常に短い間隔のスクロールのために開始することができない、これは小さなファイルの、特に大量につながります。
ここで言うために、データの収集、複数の消費者のニーズを満たすためにカフカがあります。
カフカ6.1について
カフカとは何ですか?
カフカや用語集のコアコンセプト。
カフカを展開し、使用する方法6.2
スタンドアロン展開カフカを使用し、生産者と消費者が成功した操作の独自の例を持参。
あなたは、Javaプログラムを使用して書かれており、プログラムの生産者と消費者を実行しました。
水路やカフカの統合、水路監視ログを使用して、リアルタイムログデータはカフカに送信されます。
あなたが真剣に上記の研究と実践を満たす場合は、この時点で、あなたの「ビッグデータプラットフォーム」このようにする必要があります。
このとき、水路収集したデータを使用して、直接ではなくHDFSの上に、しかし、最初のカフカ、カフカ中にデータは、消費者がHDFSにデータを同期させることである、同時に複数の消費者によって消費することができます。
あなたが続いた場合の章Vと深刻そのままのVIでの処理を再度行って、「初心者の発展に書き込まれたビッグデータの3が、その後、」、あなたはすでに、次のスキルと知識を持っている必要があります。
なぜ速いのMapReduceよりもスパーク。
代わりにSparkSQLハイブを使用しての、より高速なSQLを実行しています。
カフカ一度完全なデータの収集、多くの消費者のアーキテクチャを使用してください。
あなたはカフカの生産者と消費者を完了するためにプログラムを書くことができます。
以前の研究からは、さまざまなタスク間で、すべてのステップは、我々はタスク(プログラム)を完了するために必要なビッグデータプラットフォームのデータ収集、ほとんどのデータストレージとコンピューティング、データ交換や他のスキルを、マスターしていますそして、特定の依存関係があり、例えば、正常に完了したデータ収集タスクを待つ必要があり、データは、コンピューティングタスクを実行するために始めることができます。タスクが失敗した場合、我々は運用・保守要員の開発、およびトラブルシューティングを容易にするための完全なログを提供する必要性にアラートを送信する必要があります。
第7章:より多くの分析作業は、
単にタスク分析、データ収集、データ交換も課題の一つではありません。これらのタスクは、いくつかのタイミングトリガーは、あなたは少しトリガに他のタスクに依存する必要があります。プラットフォームは維持し、時間を実行するために必要なタスクの数十万人が存在する場合には、一人のcrontabでは十分ではありません、そして、彼らはこのを成し遂げるために管理、監督システムが必要です。制御および監視システムは、割り当てとタスクの監視を担当AppMasterに似た全データプラットフォームシステムのバックボーン、、です。
7.1 ApacheのOozie
何1. Oozieこと?機能は何ですか?2. Oozieタスクのどのような種類(プログラム)をスケジュールすることができますか?3. Oozieは、トリガータスクをサポートすることができますか?4.インストール構成Oozie。
7.2その他のオープンソースのタスクスケジューリングシステム
アズカバン:
ライトタスクスケジューラ:
ゼウス:
など......に
加えて、ここに私のタスクスケジューリングと以前に開発された監視システムは、個別に参照してください、詳細である「タスクスケジューリングおよび監視システムのためのビッグデータプラットフォーム。」 。
あなたが真剣にこの時点で、上記の研究と実践を満たす場合は、あなたの「ビッグデータプラットフォーム」次のようになります。
第8章:私のリアルタイムデータがされるように
言及したときカフカの第六章では、リアルタイムの指標を必要としますビジネスシナリオ、リアルタイムでは絶対、ほぼリアルタイムに、通常はミリ秒単位でリアルタイム、リアルタイムの絶対遅延要件、一般的には第2の遅延要件の準リアルタイム、分のオーダーの近くに分けることができます。絶対リアルタイムのビジネスシーンの必要性、嵐のより多くを、他の準リアルタイムのビジネスシナリオは嵐することができ、それはまた、スパークストリーミングすることができます。あなたができる場合はもちろん、あなたも自分自身を行うためのプログラムを書くことができます。
ストーム8.1
1.嵐は何ですか?そこに可能なシナリオは何ですか?コアコンポーネントで構成されて2ストームは、それぞれの役割とは何ですか?3.嵐簡単なインストールと展開。4.リアルタイムデータフロー計算を完了するために、嵐を使用し、独自のデモプログラムを書きます。
8.2ストリーミングスパーク
スパークストリーミングとは何1を、スパーク、それは関係がある何ですか?2.スパークストリーミングと嵐の比較、どのような利点と欠点?3.カフカ+スパークストリーミング、リアルタイムで計算、完全なデモプログラム。
あなたが真剣に上記の研究と実践を満たす場合は、この時点で、あなたの「ビッグデータプラットフォームは、」このようにする必要があります。
この時点で、あなたのビッグデータプラットフォームは、データ収集、データストレージ、コンピューティングなど、基本的なアーキテクチャを形成してきました(オフラインおよびリアルタイム)、データ同期、スケジューリング、およびこれらの大きなモジュールを監視。次の外部データアップを提供するために、最善の方法を検討する時間です。
第9章:外国人の私のデータはすべき
データアクセスを提供するために、(事業)について、一般的にオープン、一般的に以下の態様を含む:
オフライン:例えば、その上の指定したデータソースへのデータ(DB、FILE、FTP)とを提供します一日の前日、オフラインデータSqoop、データX他のオフラインデータ交換ツールを提供するために使用することができます。
リアルタイム:例えば、推薦システムのオンラインサイトでは、我々は非常に低遅延(50ミリ秒未満)を必要と推奨されるデータのユーザーにプラットフォームからリアルタイムデータを取得する必要があります。
その上でHBaseの、Redisを、MongoDBは、ElasticSearchとクエリの待ち時間要件によると、リアルタイムのデータを必要とし、可能なシナリオがあります。
OLAP分析:また、より標準化された要求にOLAPデータ・モデル下地添加は、クエリ応答時間要件も増加している、プログラムが有していてもよい:インパラ、プレスト、SparkSQL、麒麟を 。あなたはデータモデルの大きさを比較した場合、麒麟が最良の選択です。
アドホッククエリ:アドホッククエリデータ、よりカジュアル可能なシナリオがあるので、一般的なデータモデルを確立することは通常困難:インパラ、プレスト、SparkSQLを。
だから、はるかに成熟したフレームワークやプログラムは、ビジネスニーズと技術的なデータプラットフォームのアーキテクチャを組み合わせ、右を選択する必要があります。唯一の原則:よりシンプル、より安定がベストです。
すでにデータを提供するために、どのように良い外部(ビジネス)を知っている場合は、あなたの「ビッグデータプラットフォーム」次のようになります。
章Xを:マシンは、背の高い高速なハードウェア上での学習
このことについて、私の素人だけで簡単にすることができます。私は非常に恥ずかしい数学の卒業生、後悔が適切に数学を学ぶことがなかったですよ。
マシンは問題を解決するために学んで、私たちのビジネスで使用されるので、おそらく三つのカテゴリーに遭遇することができます:
分類:バイナリとマルチな分類を含むが、バイナリ分類は、予測の問題を解決するものであり、単に電子メールスパムかどうかを予測します。ソリューションは、マルチ分類テキスト分類であり、
クラスタリング問題:ユーザーが検索キーワードから、ユーザーはおそらく分類します。
推奨される質問:関連勧告の閲覧履歴に基づいて、ユーザーの行動をクリックします。
解決するために機械学習を利用して、ほとんどの産業、それは、この種の問題です。
オンライン学習入門:
数学の基礎を、
機械学習戦闘(アクションで機械学習)、Pythonは最もよく知っている。
SparkMlLibは、いくつかのパッケージ化アルゴリズムを提供し、同様の特性、特徴選択の方法を扱います。
背の高い機械学習本当に速いハードウェアは、私の学習目標です。

だから、あなたは、機械学習部を置くことができ、あなたの「ビッグデータプラットフォーム、」に追加されます。

おすすめ

転載: www.cnblogs.com/CQ-LQJ/p/11628646.html