簡體   English   中英

apache spark 可以在沒有 hadoop 的情況下運行嗎?

[英]Can apache spark run without hadoop?

SparkHadoop之間是否存在依賴關系?

如果沒有,當我在沒有Hadoop的情況下運行Spark時,我會錯過任何功能嗎?

Spark是一種內存分布式計算引擎。

Hadoop是分布式存儲 ( HDFS ) 和分布式處理 ( YARN ) 的框架。

Spark 可以使用或不使用 Hadoop 組件(HDFS/YARN)運行


分布式存儲:

由於Spark沒有自己的分布式存儲系統,所以它必須依賴這些存儲系統之一進行分布式計算。

S3 – 非緊急批處理作業。 當數據局部性不重要時,S3 適合非常特定的用例。

Cassandra – 非常適合流式數據分析和批處理作業的過度殺傷。

HDFS – 非常適合批處理作業,而不會影響數據局部性。


分布式處理:

你可以在三種不同的模式下運行 Spark: Standalone、YARN 和 Mesos

查看下面的 SE 問題,詳細了解分布式存儲和分布式處理。

我應該為 Spark 選擇哪種集群類型?

Spark 可以在沒有 Hadoop 的情況下運行,但它的一些功能依賴於 Hadoop 的代碼(例如處理 Parquet 文件)。 我們在 Mesos 和 S3 上運行 Spark,設置起來有點棘手,但一旦完成就可以很好地運行(您可以在此處閱讀正確設置所需內容的摘要)。

(編輯)注意:自 2.3.0 版以來,Spark 還添加了對 Kubernetes 的本機支持

默認情況下,Spark 沒有存儲機制。

為了存儲數據,它需要快速且可擴展的文件系統。 您可以使用 S3 或 HDFS 或任何其他文件系統。 由於成本低,Hadoop 是經濟的選擇。

此外,如果您使用 Tachyon,它將通過 Hadoop 提高性能。 強烈推薦使用 Hadoop 進行apache spark處理。 在此處輸入圖片說明

是的,spark 可以在沒有 hadoop 的情況下運行。 所有核心 spark 功能都將繼續工作,但您會錯過諸如通過 hdfs 輕松將所有文件(代碼和數據)分發到集群中的所有節點等功能。

根據 Spark 文檔,Spark 可以在沒有 Hadoop 的情況下運行。

您可以在沒有任何資源管理器的情況下以獨立模式運行它。

但是如果你想在多節點設置中運行,你需要一個像 YARN或 Mesos這樣的資源管理器和一個像 HDFS、S3 等的分布式文件系統。

是的,您可以在沒有 Hadoop 的情況下安裝 Spark。 這有點棘手您可以參考 arnon link 使用 parquet 在 S3 上將其配置為數據存儲。 http://arnon.me/2015/08/spark-parquet-s3/

Spark 只是做處理,它使用動態內存來執行任務,但是為了存儲數據,你需要一些數據存儲系統。 這里 hadoop 與 Spark 一起發揮作用,它為 Spark 提供存儲。 將 Hadoop 與 Spark 一起使用的另一個原因是它們是開源的,與其他數據存儲系統相比,兩者都可以輕松地相互集成。 對於 S3 等其他存儲,您應該很難像上面鏈接中提到的那樣配置它。

但是 Hadoop 也有它的處理單元,稱為 Mapreduce。

想知道兩者的區別嗎?

查看這篇文章: https : //www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

我想這篇文章會幫助你理解

  • 用什么,

  • 何時使用

  • 如何使用 !!!

是的當然。 Spark 是一個獨立的計算框架。 Hadoop 是一個分布式存儲系統(HDFS),帶有 MapReduce 計算框架。 Spark 可以從 HDFS 中獲取數據,也可以從傳統數據庫(JDBC)、kafka 甚至本地磁盤等任何其他數據源獲取數據。

是的,Spark 可以在安裝或不安裝 Hadoop 的情況下運行,有關更多詳細信息,您可以訪問 - https://spark.apache.org/docs/latest/

是的,spark 可以在沒有 Hadoop 的情況下運行。 您可以在沒有 Hadoop 的本地機器上安裝 spark。 但是 Spark lib 帶有預 Haddop 庫,即在本地機器上安裝時使用。

您可以在沒有 hadoop 的情況下運行 spark,但 spark 依賴於 hadoop win-utils。 所以有些功能可能不起作用,如果你想從 spark 讀取配置單元表,那么你需要 hadoop。

英語不好,見諒!

長話短說

使用本地(單節點)或獨立(集群)運行沒有 Hadoop 的 spark,但仍然需要 hadoop 依賴項來進行日志記錄和一些文件處理。
Windows強烈不推薦運行 spark!


本地模式

spark 有很多運行模式,其中一種稱為本地運行,無需 hadoop 依賴項。
那么,這是第一個問題:如何告訴 spark 我們要在本地模式下運行?
看完這個官方文檔后,我就在我的 linux 操作系統上試一試:

  1. 必須安裝java和scala,不是核心內容略過。
  2. 下載火花 package
    有“without hadoop”和“hadoop integrated”2種package
    最重要的是“沒有 hadoop”並不意味着在沒有 hadoop的情況下運行,而是不與 hadoop 捆綁在一起,因此您可以將它與您的自定義 hadoop 捆綁在一起!
    Spark 可以在沒有 hadoop(HDFS 和 YARN)的情況下運行,但需要 hadoop 依賴 jar 例如 parquet/avro 等 SerDe class,因此強烈建議使用“集成”包(你會發現缺少一些日志依賴,如 log4j 和 slfj 和其他常用工具class 如果選擇“無 hadoop” package 但所有這些都與 hadoop 集成包捆綁在一起)!
  3. 在本地模式下運行
    最簡單的方法就是運行shell,你會看到歡迎日志
# as same as ./bin/spark-shell --master local[*]
./bin/spark-shell

獨立模式

與吹一樣,但與步驟3不同。

# Starup cluster
# if you want run on frontend
# export SPARK_NO_DAEMONIZE=true 
./sbin/start-master.sh
# run this on your every worker
./sbin/start-worker.sh spark://VMS110109:7077

# Submit job or just shell
./bin/spark-shell spark://VMS110109:7077

在 windows 上?

我知道很多人在 windows 上運行 spark 只是為了學習,但這里在 windows 上非常不同,真的強烈不建議使用 windows。

最重要的是從這里下載winutils.exe並配置系統變量 HADOOP_HOME 指向winutils所在的位置。

目前3.2.1是spark最新的release版本,但是存在bug,運行時會出現Illegal character in path at index 32: spark://xxxxxx:63293/D:\classe ./bin/spark-shell.cmd ,只啟動獨立集群然后使用./bin/sparkshell.cmd或使用較低版本可以臨時解決這個問題。 有關更多詳細信息和解決方案,您可以參考此處

不。它需要完整的 Hadoop 安裝才能開始工作 - https://issues.apache.org/jira/browse/SPARK-10944

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM