1. 程式人生 > >SPARK單機模式搭建(從零開始)

SPARK單機模式搭建(從零開始)

因為是從零開始,所以本文將spark部署成單機模式,並且有些檔案放到home的個人目錄中,不過看下設定的環境變數的就可以知道,這些檔案放那裡其實是無所謂的

伺服器環境為cenos,並且JDK已經正確安裝,可通過jar命令是否可用來判斷

$ jar
Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
Options:
    -c  create new archive
    -t  list table of contents for archive
...

SCALA安裝

wget http://www.scala-lang.org/files/archive/scala-2.10.1.tgz
tar zxf scala-2.10.1.tgz
sudo mv scala-2.10.1 /usr/local

在/etc/profile.d/下建立檔案scala.sh,內容如下

$ cat /etc/profile.d/scala.sh 
#!usr/bin/env bash
export SCALA_HOME=/usr/local/scala-2.10.1
export PATH=$PATH:$SCALA_HOME/bin

使環境變數生效

cd /etc
source profile

SBT安裝

wget https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.8/sbt-launch.jar
$cd ~/
$mkdir bin --如果已經存在這個目錄則不需要重複建立
$mv sbt-launch.jar ~/bin

在~/bin目錄下建立檔案sbt,內容如下

$ cat sbt
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`
/sbt-launch.jar "[email protected]"

按如下方式測試,看是否OK

$ sbt
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
[info] Set current project to liujinliu (in build file:/home/liujinliu/)

安裝SPARK

wget http://mirrors.hust.edu.cn/apache/spark/spark-1.3.1/spark-1.3.1-bin-hadoop2.6.tgz
tar zxf spark-1.3.1-bin-hadoop2.6.tgz

啟動SPARK

./sbin/start-master.sh

登入localhost:8080可以看到UI介面,上面會顯示當前節點的資訊
其中在標題處會顯示當前master所在的URL資訊,這個引數需要作為入參在建立worker時候使用(spark://IP:PORT)
啟動一個worker

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT

此時localhost:8080的頁面可以看到worker的資訊

載入之後解壓,目錄結構如下

base/
    build.sbt
    README.md
    src/
        main/
            scala/
                 AccessLogParser.scala
                 AccessLogRecord.scala
                 SimpleTestApp.scala --這個檔案為自己建立

在src下面有一個和main同級的目錄test,刪除,下面將講解如何將這個工程編譯打包然後提交給spark執行
SimpleTestApp.scala內容如下

package com.alvinalexander.accesslogparser

import java.util.Calendar

object SimpleTestApp {
    def main(args: Array[String]) {
        val records = """
124.30.9.161 - - [21/Jul/2009:02:48:11 -0700] "GET /java/edu/pj/pj010004/pj010004.shtml HTTP/1.1" 200 16731 "http://www.google.co.in/search?hl=en&client=firefox-a&rlz=1R1GGGL_en___IN337&hs=F0W&q=reading+data+from+file+in+java&btnG=Search&meta=&aq=0&oq=reading+data+" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5"
89.166.165.223 - - [21/Jul/2009:02:48:12 -0700] "GET /favicon.ico HTTP/1.1" 404 970 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11"
94.102.63.11 - - [21/Jul/2009:02:48:13 -0700] "GET / HTTP/1.1" 200 18209 "http://www.developer.com/net/vb/article.php/3683331" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
124.30.7.162 - - [21/Jul/2009:02:48:13 -0700] "GET /images/tline3.gif HTTP/1.1" 200 79 "http://www.devdaily.com/java/edu/pj/pj010004/pj010004.shtml" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 GTB5"
122.165.54.17 - - [21/Jul/2009:02:48:12 -0700] "GET /java/java_oo/ HTTP/1.1" 200 32579 "http://www.google.co.in/search?hl=en&q=OO+with+java+standalone+example&btnG=Search&meta=&aq=f&oq=" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
217.32.108.226 - - [21/Jul/2009:02:48:13 -0700] "GET /blog/post/perl/checking-testing-perl-module-in-inc-include-path/ HTTP/1.1" 200 18417 "http://www.devdaily.com/blog/post/perl/perl-error-cant-locate-module-in-inc/" "Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7) Gecko/20070606"
122.165.54.17 - - [21/Jul/2009:02:48:15 -0700] "GET /java/java_oo/java_oo.css HTTP/1.1" 200 1235 "http://www.devdaily.com/java/java_oo/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
""".split("\n").filter(_ != "")
        val parser = new AccessLogParser
        val rec = parser.parseRecord(records(0))
        println("IP ADDRESS: " + rec.get.clientIpAddress)
    }
}

這個檔案的測試內容是參考原始碼test目錄的兩個檔案寫的

修改build.sbt內容:

name := "ScalaApacheAccessLogParser"
version := "1.0"
scalaVersion := "2.10.4"  --主要是這行,與當前使用的scala版本匹配
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
scalacOptions += "-deprecation"
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.1.0" % "test"

在base目錄下執行編譯和打包

sbt  compile
sbt  package

需要注意的是sbt 0.13.x版本一定要和scala 2.10.x版本配套使用,使用scala 2.11.x版本會報錯(can’t expand macros compiled by previous versions of Scala)

編譯成功會在base目錄下生成target資料夾,並且可以在這個資料夾的子資料夾內找到scalaapacheaccesslogparser_2.10-1.0.jar,路徑為
target/scala-2.10/scalaapacheaccesslogparser_2.10-1.0.jar

將target資料夾整體拷貝到與
spark-1.3.1-bin-hadoop2.6資料夾平行的位置

spark/
      spark-1.3.1-bin-hadoop2.6/
      target/

提交driver到spark

./spark-1.3.1-bin-hadoop2.6/bin/spark-submit --class "com.alvinalexander.accesslogparser.SimpleTestApp" --master spark://IP:PORT target/scala-2.10/scalaapacheaccesslogparser_2.10-1.0.jar

IP和PORT跟起worker時候的一樣
可以在shell看到如下輸出

IP ADDRESS: 124.30.9.161
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

另外安利我寫的兩個模組,歡迎使用或貢獻程式碼:

相關推薦

SPARK單機模式搭建(開始)

因為是從零開始,所以本文將spark部署成單機模式,並且有些檔案放到home的個人目錄中,不過看下設定的環境變數的就可以知道,這些檔案放那裡其實是無所謂的 伺服器環境為cenos,並且JDK已經正確安裝,可通過jar命令是否可用來判斷 $ jar Usa

大資料之hadoop 環境搭建開始——實戰訓練

        這裡的前提是要先安裝一個乾淨的CentOS系統,我這裡用的是CentOS6.6,安裝教程參考另一篇部落格:https://blog.csdn.net/gaofengyan/article/details/85054337 目錄 ha

Spark單機模式搭建碰到的port異常

按照網上的教程在搭建spark的時候出現了port無法繫結的問題,重試10幾次後直接失敗,無法建立sc。 解決方法,在spark-env.sh中加入 export  SPARK_MASTER_IP=127.0.0.1 export  SPARK_LOCAL_IP=

開始搭建Redis 叢集 ,三主三模式

文章引用 https://www.cnblogs.com/mafly/p/redis_cluster.htmlRedis 叢集簡介Redis 是一個開源的 key-value 儲存系統,由於出眾的效能,大部分網際網路企業都用來做伺服器端快取。Redis 在3.0版本前只支援單

【HADOOP】| 環境搭建開始搭建hadoop大數據平臺(單機/偽分布式)-下

虛擬機克隆 成功 之前 藍色 ref pin highlight .gz xml文件 因篇幅過長,故分為兩節,上節主要說明hadoop運行環境和必須的基礎軟件,包括VMware虛擬機軟件的說明安裝、Xmanager5管理軟件以及CentOS操作系統的安裝和基本網絡配置。具體

開始系列-Caffe入門到精通之一 環境搭建

python 資源暫時不可用 強制 rec htm color 查看 cpu blog 先介紹下電腦軟硬件情況吧: 處理器:Intel? Core? i5-2450M CPU @ 2.50GHz × 4 內存:4G 操作系統:Ubuntu Kylin(優麒麟) 16.04

開始學Xamarin.Forms(二) 環境搭建、創建項目

官方 log targe 4.4 pad jdk 新建文件夾 ini pos 一、環境搭建 Windows下環境搭建: 1.下載並安裝jdk 、Android SDK和NDK。當然還須要 VS2013 update 2(VS2010、VS2012均可)以上

開始學習音視頻編程技術(三) 開發環境搭建(Qt4.86手動設置環境,主要就是設置g++和qmake,比較透徹,附下載鏈接)

路徑 details 分享 baidu 末尾 是我 其中 找到 source 1.先下載安裝Qt 我們使用的版本是4.8。 可以自行百度下載也可以從下面的網盤地址下載: Qt庫和編譯器下載: 鏈接:http://pan.baidu.com/s/1hrUxLIG 密碼

開始學Swift》學習筆記(Day67)——Cocoa Touch設計模式及應用之MVC模式

table control sdn rate term targe rac uitabbar bsp 原創文章,歡迎轉載。轉載請註明:關東升的博客 MVC(Model-View-Controller,模型-視圖-控制器)模式是相當古老的設計模式之中的一個,它最早出如今

開始搭建android框架系列(轉)

bsp andro hup 開始 blank class and lan com 網址:從零開始搭建android框架系列 githup:https://github.com/CameloeAnthony/Ant從零開始搭建android框架系列(轉)

開始搭建框架SSM+Redis+Mysql(二)之MAVEN項目搭建

blog 目的 定位 enc style log onf project 集成 從零開始搭建框架SSM+Redis+Mysql(二)之MAVEN項目搭建 廢話不說,直接擼步驟!!! 1.創建主項目:ncc-parent 選擇maven創建項目,註意在創建項目中,packi

開始搭建VUE項目

vue-cli ffffff -s 內容 nbsp 部分 腳本 ssr 項目配置 前言: 此樣板面向大型,嚴肅的項目,並假定您對Webpack和vue-loader有些熟悉。 請務必閱讀vue-loader的常見工作流配方的文檔。 如果您只想嘗試vue-load

開始利用vue-cli搭建簡單音樂網站(一)

路徑 nod .com mman csdn desc blog -a where 最近在學習vue框架,練習了一些例子之後,想著搭建一個vue項目,了解到官方有提供一個vue-cli工具來搭建項目腳手架,嘗試了一下,寫下博客來記錄一下。 一、工具環境 1、node.js 6

開始搭建ELK+GPE監控預警系統

elasticsearch logstash kibana redis grafana prometheus exporter consul前言本文可能不會詳細記錄每一步實現的過程,但一定程度上可以引領小夥伴走向更開闊的視野,串聯每個環節,呈現予你不一樣的效果。業務規模8個平臺100+臺服務器10+個集群分

[Python接口自動化]開始學習python自動化(1):環境搭建

help ins cnblogs 文件中 ssi 空格 plugins 變量 mod 第一步:安裝python編譯環境 安裝python編譯環境之前,必須保證已安裝jdk哈,如果為安裝,請參考https://jingyan.baidu.com/article/6dad507

開始學習熱更新(一):搭建FTP服務器

啟動服務 ocs 手動 動態ip 手動添加 如果 信息 clas 路徑 --轉載了一部分來自http://blog.csdn.net/haibo19981/article/details/51890912 以下是在win7下的coocs2dx3.10 lua開發的 1.

開始搭建輕量級個人XSS平臺

提示 不可 應用 編輯狀態 red rip 權限 以及 signature 一、 前言 決定搭建XSS平臺是因為自己想深入學習一下XSS相關的知識,多多進行實踐,上網搜索了一下XSS平臺有很多,但是總覺得不是很安全,這個畢竟敏感信息要傳輸到陌生人的服務器上,而且服務器端測試

開始搭建系統3.4——緩存組件開發

搭建 html OS get gpo target 開發 href 系統 從零開始搭建系統3.4——緩存組件開發從零開始搭建系統3.4——緩存組件開發

開始搭建系統2.7——Quartz安裝及配置

get AR blank 安裝 pos html uart body cnblogs 從零開始搭建系統2.7——Quartz安裝及配置從零開始搭建系統2.7——Quartz安裝及配置

開始搭建系統1.2——Nginx安裝及配置

clas target nginx 1.2 targe nginx安裝 ref href 從零開始 從零開始搭建系統1.2——Nginx安裝及配置從零開始搭建系統1.2——Nginx安裝及配置