【クラウドネイティブ】Apache Livy on k8s 解説と実践操作

【クラウドネイティブ】Apache Livy on k8s 解説と実践操作

1. 概要

Livy は、Spark クラスターと対話するための REST インターフェイスを提供するサービスです。 Spark ジョブまたは Spark コードを送信し、同期的または非同期的に結果を返すことができます。また、Restful インターフェースまたは RPC クライアント ライブラリを介して Sparkcontext 管理も提供します。 Livy は Spark およびアプリケーション サービスとのやり取りも簡素化し、Web/モバイル経由で Spark の使用とやり取りできるようにします。

公式サイト: https://livy.incubator.apache.org/GitHub アドレス: https://github.com/apache/incubator-livy Apache Livy の詳細については、私の記事「Spark Open Source REST Service - Apache Livy (Spark Client)」も参照してください。

2. オーケストレーションとデプロイメントを開始する

1) 展開パッケージの準備

コンパイルされた livy デプロイメント パッケージもここに提供されます。必要な場合は、自分でダウンロードできます。

リンク: https://pan.baidu.com/s/1pPCbe0lUJ6ji8rvQYsVw9A?pwd=qn7i 抽出コード: ​qn7i

1) イメージを構築する

Dockerファイル

 myharbor.com/bigdata/centosより: 7.9.2009

RUN rm -f / etc / localtime && ln -sv / usr / share / zoneinfo / Asia / Shanghai / etc / localtime && echo "アジア/上海" > / etc / timezone
実行エクスポート LANG = zh_CN .UTF - 8

### ツールをインストールする
yum install -y vim tar wget curl less telnet net -tools lsof を実行します。

実行 groupadd --system --gid=9999 admin && useradd --system -m /home/admin --uid=9999 --gid=admin admin

mkdir -p / opt / apacheを実行します

apache-livy-0.8.0-incubating-SNAPSHOT-bin.zip/opt/apache/​​​​​​​​​​​​ を追加します。
ENV LIVY_HOME =/ opt / apache / apache - livy
RUN ln - s / opt / apache / apache - livy - 0.8 .0 - incubating - SNAPSHOT - bin $LIVY_HOME

ADD hadoop - 3.3 .2 .tar .gz / opt / apache /
ENV HADOOP_HOME =/ opt / apache / hadoop
実行ln -s / opt / apache / hadoop - 3.3 .2 $HADOOP_HOME
ENV HADOOP_CONFIG_DIR = $ { HADOOP_HOME } / etc / hadoop

ADD spark - 3.3.0 - bin - hadoop3.tar.gz / opt / apache /
ENV SPARK_HOME =/ opt / apache / spark
実行 ln -s / opt / apache / spark - 3.3.0 - bin - hadoop3 $SPARK_HOME

環境変数PATH = $ { LIVY_HOME } / bin : $ { HADOOP_HOME } / bin : $ { SPARK_HOME } / bin : $PATH

chown - R admin を実行します: admin / opt / apache

ワークディレクトリ $LIVY_HOME

ENTRYPOINT $ { LIVY_HOME } / bin / livy - server start ; tail -f $ { LIVY_HOME } /ログ/ livy -ルート-サーバー.out

[注記] hadoop パッケージ内の core-site.xml、hdfs-site.xml、yarn-site.xml

イメージの構築を開始する

 docker build -t myharbor .com / bigdata / livy : 0.8.0  --キャッシュなし

### パラメータの説明
# - t: 画像名を指定する
# . : 現在のディレクトリ Dockerfile
# - f: Dockerfileのパスを指定する
# --no-cache: キャッシュなし

# 港へ向かう
docker push myharbor .com / bigdata / livy : 0.8 .0

2) リヴィチャートテンプレートを作成する

ヘルムクリエイトリヴィ

3) YAMLレイアウトを変更する

  • livy/values.yaml
レプリカ数: 1

画像
リポジトリ: myharbor.com/bigdata/livy
プルポリシー: IfNotPresent
# デフォルトがチャートの appVersionあるイメージ タグをオーバーライドします。
タグ: "0.8.0"

セキュリティコンテキスト:
実行ユーザー: 9999
実行グループ: 9999
特権 true

サービス
タイプ: NodePort
ポート: 8998
ノードポート: 31998
  • livy/テンプレート/configmap.yaml
 APIバージョン: v1
種類: ConfigMap
メタデータ:
名前: { { "livy.fullname"を含めます。 } }
ラベル:
{ { - "livy.labels"を含めます。 |ニンデント4 } }
データ
livy.conf : |-
livy .spark .master =
livy .spark .deploy -モード=クライアント
livy .environment =生産
リヴィ.impersonation .enabled = true
livy .server .csrf_protection .enabled = false
livy .server .port = { { .Values ​​.service .port } }
livy .server .session .timeout = 3600000
livy .server .recovery .mode =リカバリ
livy .server .recovery .state -ストア=ファイルシステム
livy .server .recovery .state - store .url = / tmp / livy
livy .repl .enable - hive - context = true
livy-env.sh : | -
JAVA_HOME =/ opt / apache / jdk1.8.0_212をエクスポートします。
HADOOP_HOME をエクスポートします=/ opt / apache / hadoop
HADOOP_CONF_DIR をエクスポートします=/ opt / apache / hadoop / etc / hadoop
SPARK_HOME をエクスポートします=/ opt / apache / spark
SPARK_CONF_DIR =/ opt / apache / spark / conf をエクスポートします。
LIVY_LOG_DIR =/ opt / apache / livy / logs をエクスポートします
エクスポート LIVY_PID_DIR =/ opt / apache / livy / pid - dir
エクスポート LIVY_SERVER_JAVA_OPTS = "-Xmx512m"
spark -ブラックリスト.conf : |-
スパーク.マスター
spark.submit.deployMode

# Spark のキャッシュされた jar の場所の上書きを禁止します。
スパーク.ヤーン.jar
スパーク.yarn .jar
スパーク.ヤーン.アーカイブ

#ユーザーが RSC タイムアウトを上書きすることを許可しません。
livy.rsc.server.アイドルタイムアウト
  • livy/テンプレート/デプロイメント.yaml
 apiバージョン:アプリ/ v1
種類:デプロイメント
メタデータ:
名前: { { "livy.fullname"を含めます。 } }
ラベル:
{ { - "livy.labels"を含めます。 |ニンデント4 } }
仕様:
{ { - .Values ​​.autoscaling .enabledでない場合} }
レプリカ: { { .Values ​​.replicaCount } }
{ { -終わり} }
セレクター:
マッチラベル:
{ { - "livy.selectorLabels"を含めます。 |ニンデント6 } }
テンプレート
メタデータ:
{ { - .Values ​​.podAnnotationsを使用} }
注釈:
{ { - toYaml 。 |ニンデント8 } }
{ { -終わり} }
ラベル:
{ { - "livy.selectorLabels"を含めます。 |ニンデント8 } }
仕様:
{ { - .Values ​​.imagePullSecretsを使用} }
イメージプルシークレット:
{ { - toYaml 。 |ニンデント8 } }
{ { -終わり} }
serviceAccountName : { { "livy.serviceAccountName"を含めます。 } }
セキュリティコンテキスト:
{ { - toYaml .Values ​​.podSecurityContext |ニンデント8 } }
コンテナ:
-名前: { { .Chart .Name } }
セキュリティコンテキスト:
{ { - toYaml .Values ​​.securityContext |ニンデント12 } }
画像: "` `.`Values`.`image`.`repository `:{{ .Values.image.tag | default .Chart.AppVersion }}"
イメージプルポリシー: { { .Values ​​.image .pullPolicy } }
ポート:
-名前: http
コンテナポート: 8998
プロトコル: TCP
ライブネスプローブ:
httpGet :取得:
パス /
ポート: http
準備状況プローブ:
httpGet :取得:
パス /
ポート: http
リソース
{ { - toYaml .Values ​​.resources |ニンデント12 } }
{ { - .Values ​​.securityContextを使用} }
セキュリティコンテキスト:
実行ユーザー: { { .runAsUser } }
実行グループ: { { .runAsGroup } }
特権: { { .privileged } }
{ { -終わり} }
ボリュームマウント:
-名前: { { .Release .Name } } - livy - conf
マウントパス: /opt/apache/livy/conf/livy.conf
サブパス: livy.conf
-名前: { { .Release .Name } } - livy - env
マウントパス: /opt/apache/livy/conf/livy-env.sh
サブパス: livy-env.sh
-名前: { { .Release .Name } } - spark -ブラックリスト- conf
マウントパス: /opt/apache/livy/conf/spark-blacklist.conf
サブパス: spark - blacklist.conf
{ { - .Values ​​.nodeSelectorを使用} }
ノードセレクタ:
{ { - toYaml 。 |ニンデント8 } }
{ { -終わり} }
{ { - .Values ​​.affinityを使用} }
親和性:
{ { - toYaml 。 |ニンデント8 } }
{ { -終わり} }
{ { - .Values ​​.tolerationsを使用} }
許容範囲:
{ { - toYaml 。 |ニンデント8 } }
{ { -終わり} }
巻数:
-名前: { { .Release .Name } } - livy - conf
構成マップ:
名前: { { "livy.fullname"を含めます。 } }
-名前: { { .Release .Name } } - livy - env
構成マップ:
名前: { { "livy.fullname"を含めます。 } }
-名前: { { .Release .Name } } - spark -ブラックリスト- conf
構成マップ:
名前: { { "livy.fullname"を含めます。 } }

4) 展開を開始する

 helm で livy をインストールします。/livy -n livy --create-namespace

注記

注記:
1.次のコマンドを実行しアプリケーション URL を取得します
NODE_PORT をエクスポートします $ ( kubectl get --namespace livy -o jsnotallow="{.spec.ports[0].nodePort}" services livy)
NODE_IP をエクスポートします $ ( kubectl get nodes --namespace livy -o jsnotallow="{.items[0].status.addresses[0].address}")
httpをエコー: // $NODE_IP : $NODE_PORT

チェック

 kubectl get pods  svc - n livy - wide を実行します。 

ウェブアドレス: http://192.168.182.110:31998/ui

5) テスト検証

 curl -s - ​​​​​​​​​​110 : 31998 /バッチ| python - mjson.tool 

6) アンインストール

 helm アンインストール livy -n livy

Git アドレス: https://gitee.com/hadoop-bigdata/livy-on-k8s

<<:  エッジツークラウドがデジタル変革の次の段階をどのように推進するか

>>:  Terraform を使用して Azure 仮想マシンを作成する

推薦する

ブログの時代は終わった。Blogcnが無料サービスの終了を発表

12月13日、ブログサービスホスティングプロバイダーのBlogcn(blogcn.com)は、無料ブ...

ユーザーエクスペリエンスに影響を与える要因は何ですか?

検索エンジンの継続的な調整により、ユーザーエクスペリエンスは徐々にウェブサイト最適化の第一目標になっ...

racknerd: サンノゼディストリビューション、AMD Ryzen9 3900X+DDR4+NVMe シリーズ、VPS は年間 14 ドルから

racknerd がロサンゼルス、ダラス、シカゴ、ニューヨーク、シアトルのデータセンターで AMD ...

HarmonOS 分散アプリケーションのインテリジェント トライアングル警告サインの解釈

[[439635]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...

raksmartはどうですか? 「ブティックネットワークライン」の韓国VPSのレビュー

raksmart Koreaはどうですか? raksmart 韓国 VPS はどうですか? Raks...

革新か誇大広告か?ローコードに関する10の質問:マイクロソフトの見解

[元記事は51CTO.comより] 2020年以降、ローコードは業界で話題となり、資本市場と企業ユー...

私は自分のニッチを誇りに思っています。インターネットニッチ製品にも独自の春があります

ニッチ製品の将来については楽観的ではないと言う人もいます。一部のニッチ製品の創造性とデザインを心から...

onetechcloud: 高速 VPS が 20% オフ、最低 21 元、オプション ルート:「香港 CN2/香港 CMI/米国 CN2/米国 CU2」

onetechcloudのVPSクラウドサーバーは現在、全製品で20%割引(四半期支払いのみ)を提供...

百度や豆瓣などのチャンネルでのプロモーションの核となるロジック

前回は、サードパーティのプロモーション チャネルの定義とその一般的な種類について説明しました。それで...

locvps: 韓国の VPS、cn2+bgp ネットワーク、52 元/4G メモリ/2 コア/40gSSD/1T トラフィック/20M 帯域幅、Windows をサポート

locvps は今月、韓国のデータセンターを追加しました。韓国の VPS はアジア太平洋地域の BG...

微博チャンネルの従業員が「V追加」認証の裏話を明かす

「中国赤十字商会総経理 V」、「北京市吉林市政府事務所職員 V」、「ラジオディレクター V」...か...

モバイル アプリケーション市場の爆発的成長: APP 開発アウトソーシングの新たなパイを獲得

編集者注/スマート端末の急速な普及により、アプリケーションのダウンロードが劇的に増加しました。モバイ...

ライブストリーミング販売で損失が出たのはなぜですか?

年初から、セレブビジネスやライブ配信の人気が続いています。ライブ電子商取引の取引規模と参加者数は過去...

Webmaster.com のおかげで、3 日間で Baidu スナップショットを正常に復元できました。

6月22日と6月28日のBaiduの洗礼を受けた後、残念ながら私のウェブサイトはランキングと外部リン...