1. 程式人生 > >基於docker搭建跨主機的spark叢集並配置notebook(二)

基於docker搭建跨主機的spark叢集並配置notebook(二)

上一篇文章製作好了docker映象,現在在兩臺伺服器上部署spark叢集

宿主機1IP:192.168.0.21 ;宿主機2IP:192.168.0.30

(一)在宿主機安裝weave,使不同宿主機的容器之間能夠互相通訊

(二)實現宿主機1到宿主機2的ssh免密登入

(三)在宿主機1編寫啟動12個容器的指令碼並啟動

#vim docker_start.sh
#!/bin/bash
  weave run 172.16.0.2/24 -itd --name master -p 8090:18090 -p 8998:18998 -p 23233:23233 -p 50070:50070 -p 8080:8080 -p 9000:19000 -p 8088:8088 -p 4040:4040 -p 6066:16066 -p 7077:17077 orient/spark:1.0.2 /root/run.sh
  weave run 172.16.0.3/24 -itd --name node1 orientsoft/spark:1.0 /root/run.sh
  weave run 172.16.0.4/24 -itd --name node2 orientsoft/spark:1.0 /root/run.sh
  weave run 172.16.0.5/24 -itd --name node3 orientsoft/spark:1.0 /root/run.sh
  weave run 172.16.0.6/24 -itd --name node4 orientsoft/spark:1.0 /root/run.sh
  weave run 172.16.0.7/24 -itd --name node5 orientsoft/spark:1.0 /root/run.sh
  ssh 
[email protected]
"weave run 172.16.0.8/24 -itd --name node6 orientsoft/spark:1.0 /root/run.sh" ssh [email protected] "weave run 172.16.0.9/24 -itd --name node7 orientsoft/spark:1.0 /root/run.sh" ssh [email protected] "weave run 172.16.0.10/24 -itd --name node8 orientsoft/spark:1.0 /root/run.sh" ssh
[email protected]
"weave run 172.16.0.11/24 -itd --name node9 orientsoft/spark:1.0 /root/run.sh" ssh [email protected] "weave run 172.16.0.12/24 -itd --name node10 orientsoft/spark:1.0 /root/run.sh" ssh [email protected] "weave run 172.16.0.13/24 -itd --name node11 orientsoft/spark:1.0 /root/run.sh"

第一行的-p引數將master節點的相關埠向宿主機埠進行了對映,後面會有相關解釋。

執行該指令碼,12個容器將會在兩臺機器上開啟

(四)啟動spark叢集

1、啟動zookeeper       在node4~node5中修改myid
#echo 2 > ~/zookeeper/tmp/myid
#echo 3 > ~/zookeeper/tmp/myid
2、啟動zookeeper叢集(node3-node5):
#~/zookeeper/bin/zkServer.sh start
檢視是否啟動
#~/zookeeper/bin/zkServer.sh status
3、在master啟動所有journalnode:
#~/hadoop/sbin/hadoop-daemons.sh start journalnode
(在node3、node4、node5多了Journalnode程序)
4、格式化HDFS,在master執行
#/hadoop/bin/hdfs namenode -format
5、格式化ZK(在master的hadoop的bin目錄下)
#/hadoop/bin/hdfs zkfc -formatZK
6、啟動HDFS(在master上執行)
#~/hadoop/sbin/start-dfs.sh
7、#在node2上執行start-yarn.sh
#~/hadoop/sbin/start-yarn.sh
8、在master啟動spark叢集
#~/spark/sbin/start-all.sh 
啟動成功,可以在宿主機的瀏覽器中訪問: HDFS:master:50070 
YARN:node2:8088 
SPARK:master:8080 

(五)實現遠端監控與除錯

參考文章:http://dockone.io/article/1047,這篇文章揭示了為什麼要對master相關埠進行對映以及實現遠端監控核除錯的方法

(六)配置notebook

參考:http://www.tuicool.com/articles/nmquqi3 1、Create an ipython profile
#vim ~/.bashrc
export PYSPARK_DRIVER_PYTHON=ipython2 # As pyspark only works with python2 and not python3
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PYSPARK_SUBMIT_ARGS="--master spark://172.17.0.2:7077  pyspark-shell"
$ ipython profile create pyspark

# Possible outputs
# [ProfileCreate] Generating default config file: u'/Users/lim/.ipython/profile_pyspark/ipython_config.py'
# [ProfileCreate] Generating default config file: u'/Users/lim/.ipython/profile_pyspark/ipython_kernel_config.py'
2. Step 2: Create a startup file for this profile
$ touch ~/.ipython/profile_pyspark/startup/00-spark-setup.py
import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))#注意替換為自己系統裡的
execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))
3、啟動ipython pyspark
$ ipython --profile=spark
可以看到啟動了spark的ipython介面 4、配置notebook介面的pyspark $ mkdir -p ~/.ipython/kernels/pyspark $ touch ~/.ipython/kernels/pyspark/kernel.json
{
    "display_name": "PySpark (Spark 2.1.0)",
    "language": "python",
    "argv": [
        "/root/anaconda2/bin/python",
        "-m",
        "ipykernel",
        "--profile=pyspark",
        "-f",
        "{connection_file}"
    ]
}

$ jupyter notebook --ip=172.17.0.2
# ipython notebook works too
5、在區域網內訪問notebook 將notebook的8888埠向宿主機對映:
$iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8888 -j DNAT --to-destination 172.17.0.2:8888
$iptables -t nat -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 8888 -j  MASQUERADE
$iptables -t filter -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8888 -j ACCEPT







相關推薦

基於docker搭建主機spark叢集配置notebook()

上一篇文章製作好了docker映象,現在在兩臺伺服器上部署spark叢集宿主機1IP:192.168.0.21 ;宿主機2IP:192.168.0.30(一)在宿主機安裝weave,使不同宿主機的容器之間能夠互相通訊(二)實現宿主機1到宿主機2的ssh免密登入(三)在宿主

基於docker搭建主機spark叢集配置notebook(一)

一、製作docker映象知識水平尚有欠缺,對於dockerfile那一套理論也不熟悉,所以採取的製作一個docker映象作為啟動叢集的載體:該叢集有12個節點,即12個容器,平均分配在兩個宿主機上,具

基於Docker 搭建Cloudera 大資料環境 在CM中整合Kafka

一 基於docker搭建clouderaClouder 官方文件:英文文件,英語基礎好的同學直接照著步驟做就好了。1 拉取cloudera 映象docker pull cloudera/quickstart:latest2 執行映象官方文件提供的命令是:docker run

一文教您如何通過 Docker 搭建反向代理 Ngnix,配置 Https SSL 證書

歡迎關注個人微信公眾號: 小哈學Java, 每日推送 Java 領域乾貨文章,關注附送 100G 海量學習資源喲!! 個人網站: https://www.exception.site/docker/how-to-config-ssl-with-docker-nginx 一、背景 小哈最近收到阿里雲簡訊,提

Linux_基於Docker搭建Redis叢集

常用命令:docker images 命令來檢視我們已經安裝映象docker search <name>:查詢映象名稱docker pull <name>:拉取映象docker ps  預設顯示執行的容器,顯示所有容器:  docker ps -ado

springboot連線基於docker搭建的redis叢集

祝願明天考研的同學都能考上 環境:win10 /Docker for windows/docker redis叢集 由於redis叢集每次重新cluster nodes會更新spring boot配置的spring.redis.cluster.nodes。docker容器與本地宿主機不在

ZooKeeper此例簡單介紹基於docker的zookeeper安裝與叢集搭建

一 :安裝  1.獲取zookeeper映象 docker pull zookeeper11 2.寫配置檔案zoo.cfg tickTime=2000 dataDir=/opt/zookeeper/data clientPort=2181 initLimit=5 sync

Redis此例簡單介紹基於docker的redis安裝與叢集搭建

Redis 拓展連線 此例簡單介紹基於docker的redis安裝與叢集搭建 一:安裝 1.獲取redis映象 docker pull redis 2.寫服務配置檔案redis.conf daemonize no pidfile "/var/

基於Docker搭建Hadoop叢集

一、三節點Hadoop叢集搭建步驟 1.下載Docker映象 sudo docker pull kiwenlau/hadoop:1.0 2.下載GitHub倉庫 git clone https://github.com/kiwenlau/

基於docker搭建rabbitmq

標準 pad col 命令管理 start process 1.5 列表 使用 Docker系統有兩個程序:docker服務端和docker客戶端。其中docker服務端是一個服務進程,管理著所有的容器。docker客戶端則扮演著docker服務端的遠程控制器,可以用來控制

基於Docker搭建MySQL主從復制

效果 重啟 conn chang eve iter cli 配置 bin 摘要: 本篇博文相對簡單,因為是初次使用Docker,MySQL的主從復制之前也在Centos環境下搭建過,但是也忘的也差不多了,因此本次嘗試在Docker中搭建。 本篇博文相對簡單,因為是初次使

基於docker 搭建Elasticsearch5.6.4 分布式集群

HR conf discovery 分詞 pre div 直接 lease mage 說明: 準備2臺機器,我這裏有192.168.0.107 和 192.168.0.164 192.168.0.164 作為master 192.168.0.107 作為普通nod

基於Docker搭建分散式訊息佇列Kafka

本文基於Docker搭建一套單節點的Kafka訊息佇列,Kafka依賴Zookeeper為其管理叢集資訊,雖然本例不涉及叢集,但是該有的元件都還是會有,典型的kafka分散式架構如下圖所示。本例搭建的示例包含Zookeeper + Kafka + Kafka-manger mark &

基於docker搭建開源掃描器——伏羲

基於docker搭建開源掃描器——伏羲 1、簡介 專案地址   伏羲是一款開源的安全檢測工具,適用於中小型企業對企業內部進行安全檢測和資產統計。 功能一覽:   基於外掛的漏洞掃描功能(類似於巡風) 漏洞管理 多種協議的弱口令檢測 企業的子域

基於docker搭建oracle伺服器

拉取映象 docker pull wnameless/oracle-xe-11g 這個比較耗時,中間可能會中斷,繼續拉取即可 啟動例項 注意將selinux關掉,不然例項啟動失敗 修改/etc/selinux/config檔案,設定為disable # dis

mysql高可用-基於docker容器下的pxc叢集方案

mysql單機效能測試 mysqlslap -h192.168.1.16 -uroot -p123456 -P3306 --concurrency=5000 --iterations=1 --auto-generate-sql --auto-generate-sql-loa

基於Docker 搭建自己的webrtc 伺服器:(一)在ubuntu14.04搭建Docker 環境

一.環境準備 ​​​​​​1.安裝額外linux-image-extra-*  軟體包 linux-image-extra-* 包用於允許Docker使用aufs儲存驅動程式。AUFS是一種聯合檔案系統。它使用同一個Linux host上的多個目錄,逐個堆疊起來,對外

Docker容器主機通訊的幾種方式

前言:Docker的5種網路模式 Bridge 此時docker引擎會建立一個veth對,一端連線到容器例項並命名為eth0,另一端連線到指定的網橋中(比如docker0),因此同在一個主機的容器例項由於連線在同一個網橋中,它們能夠互相通訊。容器建立時還會自

基於docker搭建sonar程式碼質量檢測平臺

最近有點忙,好久不寫博文了,今天聽一個同事說之前他們的程式碼review都是人工來弄的,這多累,於是我趕緊搭建一個sonar程式碼質量檢測平臺給大家用用 docker環境搭建什麼的就不說了。網上很多,直接上核心命令 第一條是docker 執行一個pgsql 第二條是docker 執行一個sonar

基於Docker搭建Jumpserver堡壘機操作實踐

一、背景 筆者最近想起此前公司使用過的堡壘機系統,覺得用的很方便,而現在的公司並沒有搭建此類系統,想著以後說不定可以用上;而且最近也有點時間,因此來了搭建堡壘機系統的興趣,在搭建過程中參考了比較多的文件,其中最詳細的還是官方文件,地址如下所示: 二、操作概要 1. 系統執行 2. 配置入門 3. 測試驗證