1.spark-shell でコードを実行する
1. Spark Shell は、Spark API を学習する簡単な方法を提供します。Spark Shell は、リアルタイムかつインタラクティブな方法でデータを分析できます。Spark Shell は、Scala と Python をサポートします。
2.Spark シェル コマンド
Spark スタンドアロン モードを使用するには、Spark インストール ディレクトリを入力して実行します: ./bin/spark-shell --master <master-url>
<master-url> は置き換え可能なパラメータです
./bin/spark-shell --master <master-url>
これは、Spark を実行するために 1 つのワーカーのみが使用されることを意味するため、明らかに並列化はありません。
./bin/spark-shell --master local
私たちのコンピューターは一般的にマルチコア CPU であるため、マルチスレッドを使用したい場合は、[*] を使用して、論理 CPU の複数のスレッドを使用して Spark を実行できます。この * も特定の数値に置き換えることができます。
./bin/spark-shell --master local[*]
スタンドアロン モード (独立したクラスター モード)
./bin/spark-shell -- master spark://127.0.0.1:7077
--jars: このパラメーターは、関連する JAR パッケージを CLASSPATH に追加するために使用されます。複数の jar パッケージがある場合は、コンマ区切りを使用してそれらを接続できます。
./bin/spark-shell --mster local[*] --jars wordcount.jar
「spark-shell --help」コマンドを実行して、オプションの完全なリストを取得できます
spark-shell --help
2. Spark スタンドアロン アプリケーションの作成
Scala で書かれたプログラムは、sbt または Maven を使用してコンパイルおよびパッケージ化する必要があります。
コンパイルおよびパッケージ化ツールをインストールする
本番環境では、通常、sbt と Maven を使用してコードをパッケージ化し、コンパイルします。次に、spark-submit コマンドを使用して jar パッケージを送信し、クラスターまたはスタンドアロン環境で実行します。
1. sbt をインストールする
sbt は、Spark が scala プログラムをパッケージ化するために使用するツールです。Spark には sbt が付属していないため、ダウンロードしてインストールする必要があります。
sbt を解凍します: tar -zxf sbt-0.13.18.tgz
tar -zxf sbt-0.13.18.tgz
sbt を /usr/local/ ディレクトリに移動し、ディレクトリ sudo mv sbt /usr/local/ cd /usr/local/sbt に入ります
sudo mv sbt /usr/local/
cd /usr/local/sbt
sbt スクリプトを作成する
vim sbt
#添加一下代码
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /usr/local/sbt/bin/sbt-launch.jar "$@" #红字绝对路径是sbt安装目录
スクリプトを実行可能にする chmod u+x sbt
chmod u+x sbt
国内ミラーを更新するようにsbtを設定
vim conf/sbtopts
#添加以下代码
-Dsbt.override.build.repos=true
-Dsbt.repository.config=path_to_repositories_file
sbt 国産イメージファイルの作成
cd /usr/local/sbt
vim repositories
#添加以下代码
[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
maven-central: https://repo1.maven.org/maven2/
sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
sbt スクリプトを初めて実行し、sbt を更新します
./sbt sbt-version
Spark アプリケーション コードを書く
1. アプリケーション ディレクトリを作成する
cd ~
mkdir ./sparkapp
mkdir -p ./sparkapp/src/main/scala
2. scala コード ファイル SimpleApp.scala を作成します。
vim ./sparkapp/src/main/scala/SimpleApp.scala
#完整代码
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "file:///usr/local/spark-2.1.0/README.md"
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
コンパイルしてパッケージ化する
sbt でパッケージ化
sbt パッケージ化のために満たさなければならない条件:
1.アプリケーションフォルダーのルート
2. パッケージ ファイルは .sbt で終わる必要があります
3. そこで、vim ./sparkapp/simple.sbt を使用してパッケージ ファイルをビルドします。
vim ./sparkapp/simple.sbt
name:="XXX" #应用程序的名称是什么
version:="1.0" #应用程序当前版本号
scalaVersion:="2.11.8" #当前scala的版本
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
#依赖于GroupID为"org.apache.spark",artifact号是是2.1.0,这样就会自动去网上把相关的jar包下载下来使用
#%について: 今後の書き込みでは%の使い方に注意 1. %% は未修正のバージョンを表す 2. % は特定のバージョンを表す
ディレクトリ構造を確認します。
cd ~/sparkapp/
find .
パッケージ cd ~/sparkapp /usr/local/sbt/sbt パッケージ
cd ~/sparkapp
/usr/local/sbt/sbt package
生成された Jar パッケージの場所は、現在のアプリケーション ディレクトリの下の /target/scala-2.11 サブディレクトリです. このディレクトリの下にサブディレクトリがあり、その中の simple-project で始まるファイルがパッケージ化された jar パッケージです。
spark-submit でプログラムを実行する
Spark インストール ディレクトリに入り、./bin/spark-submit コマンドを使用して、実行するために jar パッケージを Spark にアップロードします. ここでの jar パッケージは、任意の spark 操作モードで実行できることに注意してください. 基本的なコマンドに加えて、spark -submit コマンドには、追加できる多くのパラメーターがあります
次のコマンドを使用して、jar パッケージ ジョブを送信します。
/usr/local/spark-2.1.0/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"
注意结尾 2>&1 | grep "Lines with a:"是Linux管道命令,可以过滤一些不必要的信息
3. クラスターで Spark アプリケーションを実行する
1.クラスターを開く
Hadoop を開いてからスパークする
2.課題提出
cd /usr/local/spark-2.1.0 bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://192.168.131:7077 \
例/jars/spark-examples_2.11-2.1.0.jar 100 2>&1 | grep "円周率はおおよそ"
cd /usr/local/spark-2.1.0 bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.131:7077 examples/jars/spark-examples_2.11-2.1.0.jar 100 2>&1 | grep "Pi is roughly"
ジョブを送信する (YARN モード)
クラスターで Spark-shell を実行する