SparkはHadoopの代替です。ただし、Sparkをインストールしようとすると、インストールページが既存のHadoopのインストールを要求します。その関係を明確にするものを見つけることができません。 。
第二に、SparkはCassandraおよびHiveへの接続性が良いようです。どちらもsqlスタイルのインターフェースを持っています。しかし、Spark独自のSQL。SparkのネイティブSQLの代わりにCassandra/Hiveを使用するのはなぜですか?これが既存のインストールがないまったく新しいプロジェクトであると仮定すると?
Sparkは、分散型メモリ処理エンジンです。 Hadoopとペアにする必要はありませんが、Hadoopは最も人気のあるビッグデータ処理ツールの1つであるため、Sparkはその環境で適切に機能するように設計されています。たとえば、HadoopはHDFS(Hadoop Distributed File System)を使用してデータを格納しているため、SparkはHDFSからデータを読み取り、結果をHDFSに保存できます。
速度のために、Sparkはデータセットをメモリに保持します。通常、HDFS、Hbase、Cassandraデータベースなどの耐久性のあるストレージからデータを読み込むことでジョブを開始します。メモリに読み込まれると、Sparkはデータに対して多くの変換を実行できます目的の結果を計算するように設定します。最終結果は通常、耐久性のあるストレージに書き戻されます。
Hadoopの代替となるという点で、特定の操作ではHadoopよりもはるかに高速になる可能性があります。たとえば、マルチパスマップの削減操作は、HadoopのディスクI/Oのほとんどが回避されるため、Hadoopマップの削減よりもSparkで劇的に高速化できます。 SparkはApache Hive用にフォーマットされたデータを読み取ることができるため、Spark SQLはHQL(Hiveクエリ言語)を使用するよりもはるかに高速です。
Cassandraには、CQL(Cassandra Query Language)と呼ばれる独自のネイティブクエリ言語がありますが、これは完全なSQLの小さなサブセットであり、集計やアドホッククエリなどには不十分です。したがって、SparkをCassandraと組み合わせると、より機能豊富なクエリ言語が提供され、ネイティブCQLが提供しないデータ分析を実行できるようになります。
Sparkのもう1つの使用例は、ストリーム処理です。 Sparkは、受信したリアルタイムデータを取り込んでマイクロバッチで処理し、結果をHDFS、Cassandraなどの耐久性のあるストレージに保存するように設定できます。
したがって、sparkは実際にはスタンドアロンのメモリシステムであり、さまざまな分散データベースやファイルシステムと組み合わせて、パフォーマンス、より完全なSQL実装、およびこうしたストリーム処理に欠けている機能を追加できます。
大学向けのHadoopに関する論文を書いています。そしてあなたの質問につまずいた。 Sparkは、永続化にHadoopを使用しているだけで、それを使用したい場合にのみ使用します。AmazonEC2などの他の永続化層で使用することが可能です。
一方、sparkはメモリ内で実行されており、Hadoopのようなmap reduceのユースケースに使用するための主なビルドではありません。
詳細な説明が必要な場合は、この記事をお勧めします: https://www.xplenty.com/blog/2014/11/Apache-spark-vs-hadoop-mapreduce/
SparkのREADME.mdファイルでパズルを解決できます:
Hadoopバージョンに関する注意
Sparkは、Hadoopコアライブラリを使用して、HDFSおよび他のHadoopがサポートするストレージシステムと通信します。プロトコルはHadoopの異なるバージョンで変更されているため、クラスターが実行しているのと同じバージョンに対してSparkをビルドする必要があります。
特定のHiveおよびHive Thriftserverディストリビューションのビルドを含む、Hadoopの特定のディストリビューションのビルドに関する詳細なガイダンスについては、ビルドドキュメントを参照してください "Specifying the Hadoop Version" 。