spark安裝及入門筆記
spark介紹
Spark是個通用的叢集計算框架,通過將大量資料集計算任務分配到多臺計算機上,提供高效記憶體計算。如果你熟悉Hadoop,那麼你知道分散式計算框架要解決兩個問題:如何分發資料和如何分發計算。Hadoop使用HDFS來解決分散式資料問題,MapReduce計算正規化提供有效的分散式計算。類似的,Spark擁有多種語言的函數語言程式設計API,提供了除map和reduce之外更多的運算子,這些操作是通過一個稱作彈性分散式資料集(resilient distributed datasets, RDDs)的分散式資料框架進行的。
本質上,RDD是種程式設計抽象,代表可以跨機器進行分割的只讀物件集合。RDD可以從一個繼承結構(lineage)重建(因此可以容錯),通過並行操作訪問,可以讀寫HDFS或S3這樣的分散式儲存,更重要的是,可以快取到worker節點的記憶體中進行立即重用。由於RDD可以被快取在記憶體中,Spark對迭代應用特別有效,因為這些應用中,資料是在整個演算法運算過程中都可以被重用。大多數機器學習和最優化演算法都是迭代的,使得Spark對資料科學來說是個非常有效的工具。另外,由於Spark非常快,可以通過類似Python REPL的命令列提示符互動式訪問。
Spark庫本身包含很多應用元素,這些元素可以用到大部分大資料應用中,其中包括對大資料進行類似SQL查詢的支援,機器學習和圖演算法,甚至對實時流資料的支援。
核心元件如下:
· Spark Core:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的。
· Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行互動的API。每個資料庫表被當做一個RDD,Spark SQL查詢被轉換為Spark操作。對熟悉Hive和HiveQL的人,Spark可以拿來就用。
· Spark Streaming:允許對實時資料流進行處理和控制。很多實時資料庫(如Apache Store)可以處理實時資料。Spark Streaming允許程式能夠像普通RDD一樣處理實時資料。
· MLlib:一個常用機器學習演算法庫,演算法被實現為對RDD的Spark操作。這個庫包含可擴充套件的學習演算法,比如分類、迴歸等需要對大量資料集進行迭代的操作。之前可選的大資料機器學習庫Mahout,將會轉到Spark,並在未來實現。
· GraphX:控制圖、並行圖操作和計算的一組演算法和工具的集合。GraphX擴充套件了RDD API,包含控制圖、建立子圖、訪問路徑上所有頂點的操作。
spark2.0釋出後,官網中將spark相關的第三方包放到libraries中 :其中包含spark-als,mllib-grid-search等一些機器學習方法。
Spark mllib
MLlib 是spark的可以擴充套件的機器學習庫,由以下部分組成:通用的學習演算法和工具類,包括分類,迴歸,聚類,協同過濾,降維,當然也包括調優的部分。
· Data types
· Basic statistics (基本統計)
o summary statistics 概括統計
o correlations 相關性
o stratified sampling 分層取樣
o hypothesis testing 假設檢驗
o random data generation 隨機數生成
· Classification and regression (分類一般針對離散型資料而言的,迴歸是針對連續型資料的。本質上是一樣的)
o linear models (SVMs, logistic regression, linear regression) 線性模型(支援向量機,邏輯迴歸,線性迴歸)
o naive Bayes 貝葉斯演算法
o decision trees 決策樹
o ensembles of trees (Random Forests and Gradient-Boosted Trees) 多種樹(隨機森林和梯度增強樹)
· Collaborative filtering 協同過濾
o alternating least squares (ALS) (交替最小二乘法(ALS) )
· Clustering 聚類
o k-means k均值演算法
· Dimensionality reduction (降維)
o singular value decomposition (SVD) 奇異值分解
o principal component analysis (PCA) 主成分分析
· Feature extraction and transformation 特徵提取和轉化
· Optimization (developer) 優化部分
o stochastic gradient descent 隨機梯度下降
o limited-memory BFGS (L-BFGS) 短時記憶的BFGS (擬牛頓法中的一種,解決非線性問題)
Spark提供了四種語言的程式設計API,如下:
Finally, full API documentation is available in Scala, Java, Python and R.
RDD概念:
RDD,全稱為Resilient Distributed Datasets(彈性分散式集合),是一個容錯的、並行的資料結構,可以讓使用者顯式地將資料儲存到磁碟和記憶體中,並能控制資料的分割槽。同時,RDD還提供了一組豐富的操作(運算元)來操作這些資料。運算元包括Transformation(filter,map)和action,在這些操作中,諸如map、flatMap、filter等轉換操作實現了monad模式,很好地契合了Scala的集合操作。除此之外,RDD還提供了諸如join、groupBy、reduceByKey等更為方便的操作(注意,reduceByKey是action,而非 transformation),以支援常見的資料運算。
RDD可以看做是一個數組,資料的元素分佈在叢集中的各個機器上。Spark操作的物件是RDD,運算元操作會對RDD進行轉換,當RDD遇到aciton運算元時,將之前的所有運算元形成一個有向無環圖(DAG)RDD Graph,再在Spark中轉化為Job,提交到叢集執行。
RDD儲存以partition為單位,和hdfs的block概念相同。(與hive 的partition概念不同,hive的是邏輯分割槽,比如按照日期分割槽)
參考:《Spark大資料處理-技術、應用於效能優化》
安裝
1, 安裝scala
解壓tar -zxvf scala-2.11.7.tgz
配置scala環境變數,vi /etc/profile
#set the scala environment
export SCALA_HOME=/home/hadoop/Spark/scala-2.11.7
PATH=${SCALA_HOME}/bin:$PATH
使檔案生效:source /etc/profile
2, 安裝spark
Spark的安裝和配置比較簡單,
這裡直接下載帶有hadoop依賴的版本spark-*-bin-hadoop2.6.tgz,(spark-*-bin-without-hadoop是預編譯的無hadoop的版本,需要手動將hadoop依賴jar包進行拷貝):
解壓tar -zxvf spark-1.5.0-bin-hadoop2.6.tgz
配置conf/spark-env.sh檔案:
cp spark-env.sh.template spark-env.sh
vi conf/spark-env.sh
export SCALA_HOME=/home/hadoop/Spark/scala-2.11.7//necessary
export SPARK_WORKER_MEMORY=1g
export SPARK_MASTER_IP=192.168.40.128
export MASTER=spark://192.168.40.128:7077
引數SPARK_WORKER_MEMORY決定在每一個Worker節點上可用的最大記憶體,正價這個數值可以在記憶體中快取更多的資料,但是一定要給Slave的作業系統和其他服務預留足夠的記憶體,這裡的單位可以使m,g,數值不能為小數,否則報錯。配置MASTER,否則會造成Slave無法註冊主機錯誤。
配置slaves檔案:
cp slaves.template slaves
vi conf/slaves
ubuntu2
spark的master需要免密碼登入到slaves上,所以保證安裝了ssh:
[ubuntu1]:ssh ubuntu2
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-26-generic x86_64)
l Documentation: https://help.ubuntu.com/
System information disabled due to load higher than 1.0
Last login: Fri Sep 25 18:07:58 2015 from 192.168.40.1
[email protected]:~$ jps
6377 Jps
[email protected]:~$ ssh ubuntu1
[email protected]'s password:
在所有worker上安裝並配置Spark
既然master上的這個檔案件已經配置好了,把它拷貝到所有的worker。注意,三臺機器spark所在目錄必須一致,因為master會登陸到worker上執行命令,master認為worker的spark路徑與自己一樣。
$ cd
$ scp -r spark-0.7.2 [email protected]:~
3,啟動叢集
啟動spark
./sbin/start-all.sh
關閉spark
./sbin/stop-all.sh
檢測是否安裝成功:
遇到問題,在 slave節點上,提示JAVA_HOME is not set,但是使用命令檢視:
echo $JAVA_HOME是存在的。
這裡解決方法是將export JAVA_HOME語句寫到spark-env.sh檔案中。
檢視日誌在logs下的.out檔案中。
啟動完hadoop後:
通過webUI檢視叢集狀態:
Interactive Analysis with the Spark Shell
首先將README.rm檔案上傳到hadoop的/user/hadoop/目錄下:
hadoop fs -put README.md /user/hadoop
Spark-shell help
執行./spark-shell --help 檢視spark-shell命令幫助:
--master MASTER_URL spark://host:port, mesos://host:port, yarn, or local.
--deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or
on one of the worker machines inside the cluster ("cluster")
(Default: client).
--class CLASS_NAME Your application's main class (for Java / Scala apps).
--name NAME A name of your application.
--jars JARS Comma-separated list of local jars to include on the driver
and executor classpaths.
--packages Comma-separated list of maven coordinates of jars to include
on the driver and executor classpaths. Will search the local
maven repo, then maven central and any additional remote
repositories given by --repositories. The format for the
coordinates should be groupId:artifactId:version.
--exclude-packages Comma-separated list of groupId:artifactId, to exclude while
resolving the dependencies provided in --packages to avoid
dependency conflicts.
--repositories Comma-separated list of additional remote repositories to
search for the maven coordinates given with --packages.
--py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place
on the PYTHONPATH for Python apps.
--files FILES Comma-separated list of files to be placed in the working
directory of each executor.
--conf PROP=VALUE Arbitrary Spark configuration property.
--properties-file FILE Path to a file from which to load extra properties. If not
specified, this will look for conf/spark-defaults.conf.
--driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 1024M).
--driver-java-options Extra Java options to pass to the driver.
--driver-library-path Extra library path entries to pass to the driver.
--driver-class-path Extra class path entries to pass to the driver. Note that
jars added with --jars are automatically included in the
classpath.
--executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G).
--proxy-user NAME User to impersonate when submitting the application.
--help, -h Show this help message and exit
--verbose, -v Print additional debug output
--version, Print the version of current Spark
Spark standalone with cluster deploy mode only:
--driver-cores NUM Cores for driver (Default: 1).
Spark standalone or Mesos with cluster deploy mode only:
--supervise If given, restarts the driver on failure.
--kill SUBMISSION_ID If given, kills the driver specified.
--status SUBMISSION_ID If given, requests the status of the driver specified.
Spark standalone and Mesos only:
--total-executor-cores NUM Total cores for all executors.
Spark standalone and YARN only:
--executor-cores NUM Number of cores per executor. (Default: 1 in YARN mode,
or all available cores on the worker in standalone mode)
YARN-only:
--driver-cores NUM Number of cores used by the driver, only in cluster mode
(Default: 1).
--queue QUEUE_NAME The YARN queue to submit to (Default: "default").
--num-executors NUM Number of executors to launch (Default: 2).
--archives ARCHIVES Comma separated list of archives to be extracted into the
working directory of each executor.
--principal PRINCIPAL Principal to be used to login to KDC, while running on
secure HDFS.
--keytab KEYTAB The full path to the file that contains the keytab for the
principal specified above. This keytab will be copied to
the node running the Application Master via the Secure
Distributed Cache, for renewing the login tickets and the
delegation tokens periodically.
Python spark shell
這裡執行python 的spark shell:
./bin/pyspark
執行:
textFile=sc.textFile("README.md")//預設是從/user/hadoop目錄下讀取的
>>> textFile.count()
15/09/28 16:18:42 INFO mapred.FileInputFormat: Total input paths to process : 1
15/09/28 16:18:49 INFO spark.SparkContext: Starting job: count at <stdin>:1
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Got job 0 (count at <stdin>:1) with 2 output partitions
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Final stage: ResultStage 0(count at <stdin>:1)
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Parents of final stage: List()
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Missing parents: List()
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Submitting ResultStage 0 (PythonRDD[2] at count at <stdin>:1), which has no missing parents
15/09/28 16:18:49 INFO storage.MemoryStore: ensureFreeSpace(6064) called with curMem=145215, maxMem=560497950
15/09/28 16:18:49 INFO storage.MemoryStore: Block broadcast_1 stored as values in memory (estimated size 5.9 KB, free 534.4 MB)
15/09/28 16:18:49 INFO storage.MemoryStore: ensureFreeSpace(3559) called with curMem=151279, maxMem=560497950
15/09/28 16:18:49 INFO storage.MemoryStore: Block broadcast_1_piece0 stored as bytes in memory (estimated size 3.5 KB, free 534.4 MB)
15/09/28 16:18:49 INFO storage.BlockManagerInfo: Added broadcast_1_piece0 in memory on 192.168.40.128:60254 (size: 3.5 KB, free: 534.5 MB)
15/09/28 16:18:49 INFO spark.SparkContext: Created broadcast 1 from broadcast at DAGScheduler.scala:861
15/09/28 16:18:49 INFO scheduler.DAGScheduler: Submitting 2 missing tasks from ResultStage 0 (PythonRDD[2] at count at <stdin>:1)
15/09/28 16:18:49 INFO scheduler.TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
15/09/28 16:18:49 INFO scheduler.TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, 192.168.40.129, ANY, 2157 bytes)
15/09/28 16:18:53 INFO storage.BlockManagerInfo: Added broadcast_1_piece0 in memory on 192.168.40.129:42679 (size: 3.5 KB, free: 534.5 MB)
15/09/28 16:18:57 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on 192.168.40.129:42679 (size: 14.1 KB, free: 534.5 MB)
spark介紹
Spark是個通用的叢集計算框架,通過將大量資料集計算任務分配到多臺計算機上,提供高效記憶體計算。如果你熟悉Hadoop,那麼你知道分散式計算框架要解決兩個問題:如何分發資料和如何分發計算。Hadoop使用HDFS來解決分散式資料問題,MapReduce計算正規化提供有效的分散式計算 模式 clas art netstat 參數 log 狀態信息 use 幫助 tftp命令用在本機和tftp服務器之間使用TFTP協議傳輸文件。
TFTP是用來下載遠程文件的最簡單網絡協議,它其於UDP協議而實現。
linux服務器端tftp-server的配置
1、安裝t guest plugins sys def 一個 top new all num 1.Windows下安裝RabbitMQ需要以下幾個步驟
(1):下載erlang,原因在於RabbitMQ服務端代碼是使用並發式語言erlang編寫的,下載地址:http://www
說明:本文使用的是兩個節點的叢集,分別為node1和node2
配合如下帖子進行學習:
centos下按安裝python3和2共存
使用centos6.7
1.安裝saltstack
在node1和node2分別執行下面的命令(下面是先配置映象源為阿里雲,作用是提高下載速度)
本文執行的具體環境如下:
centos7.3
Hadoop 2.8.4
Java JDK 1.8
Spark 1.6.3
一、安裝Hadoop
關於Hadoop的安裝,這裡就不概述了!
二、安裝 Spark
下載網址http://archive.apa
安裝
本文只是基於 Chrome 瀏覽器的擴充套件外掛來進行的安裝,並非單獨應用程式。 首先,你要臺電腦,其次,安裝有 Chrome 瀏覽器,那你接著往下看吧。
1. 官網安裝(別看)
開啟官網,https://www.getpostman.com
1、Linux 下node及npm環境安裝
下載安裝node-v10.12.0-linux-x64 wget https://npm.taobao.org/mirrors/node/v10.12.0/node-v10.12.0-linux-x64.tar.xz 1.tar -xvf node-v10.12.
自然語言處理是電腦科學領域與人工智慧領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通訊的各種理論和方法。《Python自然語言處理》主要介紹如何用Python進行自然語言處理,專欄中程式碼的執行環境為Python3。Pyt
Flink 安裝(叢集模式):
1:下載安裝flink的安裝包,注意hadoop的版本相容問題
2:解壓安裝包,進入conf配置檔案目錄下,主要配置檔案為flink-conf.yaml和slaves,配置flink-conf.yaml解析如下:
2.1
1.Windows下安裝RabbitMQ需要以下幾個步驟 (1):下載erlang,原因在於RabbitMQ服務端程式碼是使用併發式語言erlang編寫的,下載地址:http://www.erlang.org/downloads,雙擊.exe檔案進行安裝就好,安裝完成之後
pip install tqdm
1
或者
conda install -c conda-forge tqdm
1
2、tqdm的使用
進度條 tqdm 庫比較熱門,聲稱比老版的 python-progressbar 庫的單
安裝
版本配套
Spark: 1.6.2
Scala: 2.12.1
軟體安裝
1、安裝JDK
手工配置JAVA_HOME環境變數,並將JDK的bin目錄加入Path環境變數中。
2、安裝Scala Windows版
通過.msi軟體包安裝。安裝完成後自動配置環境變數SC
CentOS 6.9redis-3.0.7.tar.gz1.解壓 tar -zxvf redis-3.0.7.tar.gz 2.安裝 cd redis-3.0.7 make 編譯後在Redis原始碼目錄的src資料夾中可以找到若干個可執行程式make
前言及概念
據說nodejs和MongoDB是一對好基友,於是就忍不住去學習瞭解了一下MongoDB相關的一些東西, 那麼,MongoDB是什麼?這裡的五件事是每個開放人員應該知道的:
MongoDB是一個獨立的伺服器;
如MySQL或PostreSQL 一
http://www.cnblogs.com/onemorepoint/p/8310996.html
下載安裝配置環境變數
intall
配置環境變數
驗證
基本繪圖入門
graph
digraph
下載安裝配置環境變數
intall
配置環境變數
驗證
基本繪圖入門
graph
digraph
一個複雜的例子
和python互動
發現好的工具,如同發現新大陸。有時,我們會好奇,論文中、各種專業的書中那麼形象的插圖是如何做出來的,無一例外不是對繪圖工具的熟練使用。
下載安
RDD(Resilient Distributed Datasets)分散式彈性資料集,將資料分
安裝conda,安裝Miniconda3-latest-Linux-x86_64.sh就行了,命令如下(兩步):
#第一步,安裝minconda
sh Miniconda3-latest-Linux-x86_64.sh
#接下來next-->yes-
下載安裝、配置環境變數
intall
雙擊msi檔案,然後一直next(記住安裝路徑,後面配置環境變數會用到路徑資訊),安裝完成之後,會在windows開始選單建立快捷資訊,預設快捷方式不放在桌面。
配置環境變數
將graphvi
1.Windows下安裝RabbitMQ需要以下幾個步驟
(1):下載erlang,原因在於RabbitMQ服務端程式碼是使用併發式語言erlang編寫的,下載地址:http://www.erl 相關推薦
spark安裝及入門筆記
Linux中tftp安裝及使用筆記
:Windows下RabbitMQ安裝及入門
saltstack安裝及使用筆記(史上最全,不全不要錢)
大資料篇:Spark安裝及測試PI的值
Postman安裝及入門教程
node Puppeteer 安裝 及 入門
自然語言分析包NLTK安裝及入門
Flink之二 Flink安裝及入門案例
Windows下RabbitMQ安裝及入門
python包tqdm安裝及入門
spark安裝及環境搭建
Redis(1):原始碼編譯安裝及入門
MongoDB+MongoVUE安裝及入門
(轉)windows下Graphviz安裝及入門教程
windows下Graphviz安裝及入門教程
Spark MLlib 學習入門筆記
conda及其TensorFlow安裝及入門
windows 下 Graphviz 安裝及入門教程
RabbitMQ系列(一):Windows下RabbitMQ安裝及入門