大數據運維知識

大數據介紹html

1.數據的存儲(big data storage),海量數據須要處理和分析,但前提是要進行有效的存儲。稍後會提到HadoopHDFS)分佈式文件系統對超大數據集的容錯性問題。java

2.數據的計算(Data calculation),在數據有效存儲的基礎上,對數據的統計和分析本質上就是數據的計算。在大數據領域常見的計算工具備MapReduceSpark等。node

3.數據的查詢(consensus data),對大數據進行有效管理的核心指標是數據查詢技術。其中NoSQL (Not Only SQL)應用較爲普遍,能較有效解決數據的隨機查詢,其中就主要包括Hbase等。從本質而言,依舊是Hadoop模式下的數據查詢。web

4.數據的挖掘(Data mining),數據倉庫爲數據的挖掘提供了基礎,經過分類、預測、相關性分析來創建模型進行模式識別、機器學習從而構建專家系統。docker

以上這四點就是HadoopHiveSpark共同完成的目標。shell

 

Hadoop從本質上講是一個分佈式文件系統(HDFS數據庫

Spark是數據的計算就是在HDFS基礎上進行分類彙總express

Hive是數據倉庫工具,首先它是創建在HDFS基礎之上的HDFS中結構化的數據映射爲數據庫中的表僅僅經過SQL語句就能夠查詢MapReduce的計算結果,同時還能夠經過SQL對文件系統中的數據進行修改apache

1) hive運維知識

 

2) Hadoop 運維知識

  1. HDFS: Hadoop Distributed File System  分佈式文件系統
  2. YARN: Yet Another Resource Negotiator   資源管理調度系統
  3. Mapreduce:分佈式運算框架

1. centos上搭建Hadoop集羣

這裏搭建的是3個節點的徹底分佈式,即1nameNode2dataNode,分別以下:vim

master    nameNode    192.168.0.249

node1    dataNode    192.168.0.251

node2    dataNode    192.168.0.252

1.首先建立好一個CentOS虛擬機,將它做爲主節點我這裏起名爲master,起什麼都行,不固定要求
2.VMware中打開虛擬機,輸入java -version,檢查是否有JDK環境,不要用系統自帶的openJDK版本,要本身安裝的版本
3.輸入 firewall-cmd --state,若防火牆處於running狀態,則關閉防火牆

 

systemctl stop firewalld.service       關閉防火牆

 

systemctl disable firewalld.service       禁用防火牆

 

4.輸入mkdir /usr/local/hadoop   建立一個hadoop文件夾
5.將hadoop-3.0.3.tar.gz放到剛建立好的hadoop文件夾中
6.進入hadoop目錄,輸入tar -xvf hadoop-3.0.3.tar.gz 解壓tar包

[root@master sbin]# cd /usr/local/hadoop/

[root@master hadoop]# ls

hadoop-3.0.3  hadoop-3.0.3.tar.gz 

7.輸入 vi /etc/profile,配置環境變量。加入如以下內容

export HADOOP_HOME=/usr/local/hadoop/hadoop-3.0.3

 

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

8. 輸入 souce /etc/profile ,使環境變量改動生效
9.任意目錄輸入hado,而後按Tab,若是自動補全爲hadoop,則說明環境變量配的沒問題,不然檢查環境變量哪出錯了

[root@master ~]# hadoop

10.建立3個以後要用到的文件夾,分別以下:

mkdir /usr/local/hadoop/tmp

 

mkdir -p /usr/local/hadoop/hdfs/name

 

mkdir /usr/local/hadoop/hdfs/data

 

11.進入hadoop-3.0.3解壓後的 /etc/hadoop 目錄,裏面存放的是hadoop的配置文件,接下來要修改裏面一些配置文件
12. 有兩個 .sh 文件,須要指定一下java的目錄,首先輸入 vi hadoop-env.sh 修改配置文件

[root@master hadoop]# vi hadoop-env.sh

將原有的JAVA_HOME註釋掉,根據本身的JDK安裝位置,精確配置JAVA_HOME以下,保存並退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_161/

13. 輸入 vi yarn-env.sh 修改配置文件

[root@master hadoop]# vi yarn-env.sh

加入以下內容,指定JAVA_HOME,保存並退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_161/

14. 輸入 vi core-site.xml 修改配置文件

[root@master hadoop]# vi core-site.xml

configuration標籤中,添加以下內容,保存並退出,注意這裏配置的hdfs:master:9000是不能在瀏覽器訪問的

<!--

        <property>

                <name> fs.default.name </name>

                <value>hdfs://master:9000</value>

                <description>指定HDFS的默認名稱,HDFSURI</description>

        </property>

        -->

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://master:9000</value>

                <description>HDFSURI</description>

        </property>

 

        <property>

                <name>hadoop.tmp.dir</name>

                <value>file:/usr/local/hadoop/tmp</value>

                <description>節點上本地的hadoop臨時文件夾</description>

        </property>

 

15. 輸入 vi hdfs-site.xml 修改配置文件

[root@master hadoop]# vi hdfs-site.xml

configuration標籤中,添加以下內容,保存並退出

        <property>

                <name>dfs.namenode.http-address</name>

                <value>master:50070</value>

        </property>

        <!--

        <property>

                <name>dfs.datanode.http.address</name>

                <value>master:50075</value>

                <description>

                The datanode http server address and port.

                If the port is 0 then the server will start on a free port.

                </description>

        </property>

        -->

        <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:/usr/local/hadoop/hdfs/name</value>

                <description>namenode上存儲hdfs名字空間元數據 </description>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:/usr/local/hadoop/hdfs/data</value>

                <description>datanode上數據塊的物理存儲位置</description>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

                <description>副本個數,默認是3,應小於datanode機器數量</description>

        </property>

 

    <!--後增,若是想讓solr索引存放到hdfs中,則還須添加下面兩個屬性-->

        <property>

            <name>dfs.webhdfs.enabled</name>

            <value>true</value>

        </property>

        <property>

            <name>dfs.permissions.enabled</name>

            <value>false</value>

        </property>

 

16. 輸入 vi mapred-site.xml 修改配置文件

[root@master hadoop]# vi mapred-site.xml

configuration標籤中,添加以下內容,保存並退出

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

                <description>指定mapreduce使用yarn框架</description>

        </property>

 

17. vi yarn-site.xml 修改配置文件

[root@master hadoop]# vi yarn-site.xml

configuration標籤中,添加以下內容,保存並退出

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>master</value>

                <description>指定resourcemanager所在的hostname</description>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

                <description>

                NodeManager上運行的附屬服務。

                需配置成mapreduce_shuffle,纔可運行MapReduce程序

                </description>

        </property>

 

18. 輸入 vi workers 修改配置文件(老版本是slaves文件,3.0.3 用 workers 文件代替 slaves 文件)

[root@master hadoop]# pwd

/usr/local/hadoop/hadoop-3.0.3/etc/hadoop

[root@master hadoop]# vi workers

localhost刪掉,加入以下內容,即dataNode節點的主機名

node1

node2

 

19. 將虛擬機關閉,再複製兩份虛擬機,重命名爲node1,node2,注意這裏必定要關閉虛擬機,再複製
20. 將3臺虛擬機都打開,後兩臺複製的虛擬機打開時,都選擇「我已複製該虛擬機」
21. 在master機器上,輸入vi /etc/hostname,將localhost改成master,保存並退出
22. 在node1機器上,輸入 vi /etc/hostname,將localhost改成node1,保存並退出
23. 在node2機器上,輸入 vi /etc/hostname,將localhost改成node2,保存並退出
24. 在三臺機器分別輸入 vi /etc/hosts 修改文件,其做用是將一些經常使用的網址域名與其對應的IP地址創建一個關聯,當用戶在訪問網址時,系統會首先自動從Hosts文件中尋找對應的IP地址

三個文件中都加入以下內容,保存並退出,注意這裏要根據本身實際IP和節點主機名進行更改,IP和主機名中間要有一個空格

192.168.0.249 master

192.168.0.251 node1

192.168.0.252 node2

25. 配置三臺機器間的免密登陸ssh (搭hadoop必需要配免密登陸)

可參見https://blog.csdn.net/wudinaniya/article/details/80845845

26. 若是node節點尚未hadoop,則master機器上分別輸入以下命令將hadoop複製

scp /usr/local/hadoop/* root@node1:/usr/local/hadoop

scp /usr/local/hadoop/* root@node2:/usr/local/hadoop

 

27. 在master機器上,任意目錄輸入 hdfs namenode -format 格式化namenode,第一次使用需格式化一次,以後就不用再格式化,若是改一些配置文件了,可能還須要再次格式化

hdfs namenode -format

格式化完成。

 

28. 在master機器上,進入hadoop的sbin目錄,輸入 ./start-all.sh 啓動hadoop(若只配了hdfs,則能夠 輸入 ./start-dfs.sh 啓動hdfs)

[root@master sbin]# ./start-dfs.sh

29. 輸入jps查看當前java的進程,

該命令是JDK1.5開始有的,做用是列出當前java進程的PIDJava主類名,nameNode節點除了JPS,還有3個進程,啓動成功

若爲了只使用hdfs而只配了hdfs,採用 ./start-dfs.sh 啓動, 則

30. 在node1機器和node2機器上分別輸入 jps 查看進程以下,說明配置成功

若只配置了hdfs 採用 ./start-dfs.sh 啓動。 則

31. 在瀏覽器訪問nameNode節點的8088端口和50070端口能夠查看hadoop的運行情況
32.  在master機器上,進入hadoop的sbin目錄,輸入 ./stop-all.sh 關閉hadoop 或 輸入 ./stop-dfs.sh 關閉dfs

遇到的坑:Attempting to operate on hdfs namenode as root

寫在最前注意:

1masterslave都須要修改start-dfs.shstop-dfs.shstart-yarn.shstop-yarn.sh四個文件

2、若是你的Hadoop是另外啓用其它用戶來啓動,記得將root改成對應用戶

 

HDFS格式化後啓動dfs出現如下錯誤:

[root@master sbin]# ./start-dfs.sh

Starting namenodes on [master]

ERROR: Attempting to operate on hdfs namenode as root

ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

Starting datanodes

ERROR: Attempting to operate on hdfs datanode as root

ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.

Starting secondary namenodes [slave1]

ERROR: Attempting to operate on hdfs secondarynamenode as root

ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

 

/usr/local/hadoop/hadoop-3.0.3/sbin路徑下:

start-dfs.shstop-dfs.sh兩個文件頂部添加如下參數

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

還有,start-yarn.shstop-yarn.sh頂部也需添加如下:

 

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

修改後重啓 ./start-dfs.sh,成功!

 

2. 採用docker搭建Hadoop集羣

編寫docker-compose.yml文件

vim docker-compose.yml

 

version: "2"

 

services:

  namenode:

    image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8

    container_name: namenode

    volumes:

      - hadoop_namenode:/hadoop/dfs/name

    environment:

      - CLUSTER_NAME=test

    env_file:

      - ./hadoop.env

    ports:

      - "9999:50070"

  

  resourcemanager:

    image: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8

    container_name: resourcemanager

    depends_on:

      - namenode

      - datanode1

      - datanode2

    env_file:

      - ./hadoop.env

    ports:

      - "8088:8088"

  historyserver:

    image: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8

    container_name: historyserver

    depends_on:

      - namenode

      - datanode1

      - datanode2

    volumes:

      - hadoop_historyserver:/hadoop/yarn/timeline

    env_file:

      - ./hadoop.env

    ports:

      - "8188:8188"

  

  nodemanager1:

    image: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8

    container_name: nodemanager1

    depends_on:

      - namenode

      - datanode1

      - datanode2

    env_file:

      - ./hadoop.env

    ports:

      - "8042:8042"

  

  datanode1:

    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8

    container_name: datanode1

    depends_on:

      - namenode

    volumes:

      - hadoop_datanode1:/hadoop/dfs/data

    env_file:

      - ./hadoop.env

  

  datanode2:

    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8

    container_name: datanode2

    depends_on:

      - namenode

    volumes:

      - hadoop_datanode2:/hadoop/dfs/data

    env_file:

      - ./hadoop.env

  

  datanode3:

    image: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8

    container_name: datanode3

    depends_on:

      - namenode

    volumes:

      - hadoop_datanode3:/hadoop/dfs/data

    env_file:

      - ./hadoop.env

 

volumes:

  hadoop_namenode:

  hadoop_datanode1:

  hadoop_datanode2:

  hadoop_datanode3:

  hadoop_historyserver:

 

在當前目錄新建文件:hadoop.env

加入如下配置:

CORE_CONF_fs_defaultFS=hdfs://namenode:8020

CORE_CONF_hadoop_http_staticuser_user=root

CORE_CONF_hadoop_proxyuser_hue_hosts=*

CORE_CONF_hadoop_proxyuser_hue_groups=*

 

HDFS_CONF_dfs_webhdfs_enabled=true

HDFS_CONF_dfs_permissions_enabled=false

 

YARN_CONF_yarn_log___aggregation___enable=true

YARN_CONF_yarn_resourcemanager_recovery_enabled=true

YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore

YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate

YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs

YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/

YARN_CONF_yarn_timeline___service_enabled=true

YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true

YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true

YARN_CONF_yarn_resourcemanager_hostname=resourcemanager

YARN_CONF_yarn_timeline___service_hostname=historyserver

YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032

YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030

YARN_CONF_yarn_resourcemanager_resource___tracker_address=resourcemanager:8031

 

構建容器

docker-compose up -d

3. 如何使用hadoop集羣

FS Shell

調用文件系統(FS)Shell命令應使用 bin/hadoop fs <args>的形式。 全部的的FS shell命令使用URI路徑做爲參數。URI格式是scheme://authority/path。對HDFS文件系統,schemehdfs,對本地文件系統,schemefile。其中schemeauthority參數都是可選的,若是未加指定,就會使用配置中指定的默認scheme。一個HDFS文件或目錄好比/parent/child能夠表示成hdfs://namenode:namenodeport/parent/child,或者更簡單的/parent/child(假設你配置文件中的默認值是namenode:namenodeport)。大多數FS Shell命令的行爲和對應的Unix Shell命令相似,不一樣之處會在下面介紹各命令使用詳情時指出。出錯信息會輸出到stderr,其餘信息輸出到stdout

cat

使用方法:hadoop fs -cat URI [URI …]

將路徑指定文件的內容輸出到stdout

示例:

hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2

hadoop fs -cat file:///file3 /user/hadoop/file4

返回值:
成功返回0,失敗返回-1

chgrp

使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] Change group association of files. With -R, make the change recursively through the directory structure. The user must be the owner of files, or else a super-user. Additional information is in the Permissions User Guide. -->

改變文件所屬的組。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的全部者或者超級用戶。更多的信息請參見HDFS權限用戶指南

chmod

使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]

改變文件的權限。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的全部者或者超級用戶。更多的信息請參見HDFS權限用戶指南

chown

使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

改變文件的擁有者。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是超級用戶。更多的信息請參見HDFS權限用戶指南

copyFromLocal

使用方法:hadoop fs -copyFromLocal <localsrc> URI

除了限定源路徑是一個本地文件外,和put命令類似。

copyToLocal

使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

除了限定目標路徑是一個本地文件外,和get命令相似。

cp

使用方法:hadoop fs -cp URI [URI …] <dest>

將文件從源路徑複製到目標路徑。這個命令容許有多個源路徑,此時目標路徑必須是一個目錄。
示例:

hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2

hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

返回值:

成功返回0,失敗返回-1

du

使用方法:hadoop fs -du URI [URI …]

顯示目錄中全部文件的大小,或者當只指定一個文件時,顯示此文件的大小。
示例:
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1
返回值:
成功返回0,失敗返回-1

dus

使用方法:hadoop fs -dus <args>

顯示文件的大小。

expunge

使用方法:hadoop fs -expunge

清空回收站。請參考HDFS設計文檔以獲取更多關於回收站特性的信息。

get

使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>

複製文件到本地文件系統。可用-ignorecrc選項複製CRC校驗失敗的文件。使用-crc選項複製文件以及CRC信息。

示例:

hadoop fs -get /user/hadoop/file localfile

hadoop fs -get hdfs://host:port/user/hadoop/file localfile

返回值:

成功返回0,失敗返回-1

getmerge

使用方法:hadoop fs -getmerge <src> <localdst> [addnl]

接受一個源目錄和一個目標文件做爲輸入,而且將源目錄中全部的文件鏈接成本地目標文件。addnl是可選的,用於指定在每一個文件結尾添加一個換行符。

ls

使用方法:hadoop fs -ls <args>

若是是文件,則按照以下格式返回文件信息:
文件名 <副本數> 文件大小 修改日期 修改時間 權限 用戶ID ID
若是是目錄,則返回它直接子文件的一個列表,就像在Unix中同樣。目錄返回列表的信息以下:
目錄名 <dir> 修改日期 修改時間 權限 用戶ID ID
示例:
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile
返回值:
成功返回0,失敗返回-1

lsr

使用方法:hadoop fs -lsr <args>
ls命令的遞歸版本。相似於Unix中的ls -R

mkdir

使用方法:hadoop fs -mkdir <paths>

接受路徑指定的uri做爲參數,建立這些目錄。其行爲相似於Unixmkdir -p,它會建立路徑中的各級父目錄。

示例:

hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2

hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir

返回值:

成功返回0,失敗返回-1

movefromLocal

使用方法:dfs -moveFromLocal <src> <dst>

輸出一個」not implemented「信息。

mv

使用方法:hadoop fs -mv URI [URI …] <dest>

將文件從源路徑移動到目標路徑。這個命令容許有多個源路徑,此時目標路徑必須是一個目錄。不容許在不一樣的文件系統間移動文件。
示例:

hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2

hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1

返回值:

成功返回0,失敗返回-1

put

使用方法:hadoop fs -put <localsrc> ... <dst>

從本地文件系統中複製單個或多個源路徑到目標文件系統。也支持從標準輸入中讀取輸入寫入目標文件系統。

hadoop fs -put localfile /user/hadoop/hadoopfile

hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir

hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile

hadoop fs -put - hdfs://host:port/hadoop/hadoopfile
從標準輸入中讀取輸入。

返回值:

成功返回0,失敗返回-1

rm

使用方法:hadoop fs -rm URI [URI …]

刪除指定的文件。只刪除非空目錄和文件。請參考rmr命令瞭解遞歸刪除。
示例:

hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir

返回值:

成功返回0,失敗返回-1

rmr

使用方法:hadoop fs -rmr URI [URI …]

delete的遞歸版本。
示例:

hadoop fs -rmr /user/hadoop/dir

hadoop fs -rmr hdfs://host:port/user/hadoop/dir

返回值:

成功返回0,失敗返回-1

setrep

使用方法:hadoop fs -setrep [-R] <path>

改變一個文件的副本系數。-R選項用於遞歸改變目錄下全部文件的副本系數。

示例:

hadoop fs -setrep -w 3 -R /user/hadoop/dir1

返回值:

成功返回0,失敗返回-1

stat

使用方法:hadoop fs -stat URI [URI …]

返回指定路徑的統計信息。

示例:

hadoop fs -stat path

返回值:
成功返回0,失敗返回-1

tail

使用方法:hadoop fs -tail [-f] URI

將文件尾部1K字節的內容輸出到stdout。支持-f選項,行爲和Unix中一致。

示例:

hadoop fs -tail pathname

返回值:
成功返回0,失敗返回-1

test

使用方法:hadoop fs -test -[ezd] URI

選項:
-e 檢查文件是否存在。若是存在則返回0
-z 檢查文件是不是0字節。若是是則返回0
-d 若是路徑是個目錄,則返回1,不然返回0

示例:

hadoop fs -test -e filename

text

使用方法:hadoop fs -text <src>

將源文件輸出爲文本格式。容許的格式是zipTextRecordInputStream

touchz

使用方法:hadoop fs -touchz URI [URI …]

建立一個0字節的空文件。

示例:

hadoop -touchz pathname

返回值:
成功返回0,失敗返回-1

 

3) spark 運維知識

1.spark的搭建

1. 搭建spark以前須要先安裝hadoop

安裝流程參考hadoop的搭建章節

2. 搭建Spark(master、slave相同操做,先修改master再scp同步到slave
2.1 安裝spark

cd /usr/loca/src/

tar zxvf spark-2.0.2-bin-hadoop2.7.tgz

mv spark-2.0.2-bin-hadoop2.7  /usr/local/spark-2.0.2

2.2 配置spark環境變量

vim /etc/profile

添加以下信息

######### spark ############export SPARK_HOME=/usr/local/spark-2.0.2export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

2.3 刷新配置文件:

source /etc/profile

2.4 修改spark配置文件

cd /usr/local/spark-2.0.2/conf

mv spark-env.sh.template spark-env.sh

[root@spark-master conf]# ll

總用量 36-rw-r--r--. 1  500  500  987 11月  8 09:58 docker.properties.template-rw-r--r--. 1  500  500 1105 11月  8 09:58 fairscheduler.xml.template-rw-r--r--. 1  500  500 2025 11月  8 09:58 log4j.properties.template-rw-r--r--. 1  500  500 7239 11月  8 09:58 metrics.properties.template-rw-r--r--. 1  500  500  912 12月 21 16:55 slaves-rw-r--r--. 1  500  500 1292 11月  8 09:58 spark-defaults.conf.template-rwxr-xr-x. 1 root root 3969 12月 21 15:50 spark-env.sh-rwxr-xr-x. 1  500  500 3861 11月  8 09:58 spark-env.sh.template

2.4.1 spark關聯jdk

vim spark-env.sh

#!/usr/bin/env bash

 

#

# Licensed to the Apache Software Foundation (ASF) under one or more

# contributor license agreements.  See the NOTICE file distributed with

# this work for additional information regarding copyright ownership.

# The ASF licenses this file to You under the Apache License, Version 2.0

# (the "License"); you may not use this file except in compliance with

# the License.  You may obtain a copy of the License at

#

#    http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

 

# This file is sourced when running various Spark programs.

# Copy it as spark-env.sh and edit that to configure Spark for your site.

 

# Options read when launching programs locally with

# ./bin/run-example or ./bin/spark-submit

# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files

# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node

# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program

# - SPARK_CLASSPATH, default classpath entries to append

 

# Options read by executors and drivers running inside the cluster

# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node

# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program

# - SPARK_CLASSPATH, default classpath entries to append

# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data

# - MESOS_NATIVE_JAVA_LIBRARY, to point to your libmesos.so if you use Mesos

 

# Options read in YARN client mode

# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files

# - SPARK_EXECUTOR_INSTANCES, Number of executors to start (Default: 2)

# - SPARK_EXECUTOR_CORES, Number of cores for the executors (Default: 1).

# - SPARK_EXECUTOR_MEMORY, Memory per Executor (e.g. 1000M, 2G) (Default: 1G)

# - SPARK_DRIVER_MEMORY, Memory for Driver (e.g. 1000M, 2G) (Default: 1G)

 

# Options for the daemons used in the standalone deploy mode

# - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname

# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master

# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")

# - SPARK_WORKER_CORES, to set the number of cores to use on this machine

# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)

# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker

# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node

# - SPARK_WORKER_DIR, to set the working directory of worker processes

# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")

# - SPARK_DAEMON_MEMORY, to allocate to the master, worker and history server themselves (default: 1g).

# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")

# - SPARK_SHUFFLE_OPTS, to set config properties only for the external shuffle service (e.g. "-Dx=y")

# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")

# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers

 

# Generic options for the daemons used in the standalone deploy mode

# - SPARK_CONF_DIR      Alternate conf dir. (Default: ${SPARK_HOME}/conf)

# - SPARK_LOG_DIR       Where log files are stored.  (Default: ${SPARK_HOME}/logs)

# - SPARK_PID_DIR       Where the pid file is stored. (Default: /tmp)

# - SPARK_IDENT_STRING  A string representing this instance of spark. (Default: $USER)

# - SPARK_NICENESS      The scheduling priority for daemons. (Default: 0)

#java的環境變量export JAVA_HOME=/usr/local/jdk1.8.0_111

#spark主節點的ipexport SPARK_MASTER_IP=172.16.200.81

#spark主節點的端口號export SPARK_MASTER_PORT=7077

2.4.2 配置slaves

vim slaves

## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements.  See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except in compliance with# the License.  You may obtain a copy of the License at##    http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.#

# A Spark Worker will be started on each of the machines listed below.

172.16.200.81

172.16.200.82

172.16.200.83

172.16.200.84

3. 安裝scala

cd /usr/loca/src/

tar zxvf scala-2.12.1.tgz

mv scala-2.12.1  /usr/local

3.1 配置scala環境變量(只master安裝)

vim /etc/profile

添加以下信息

######### scala ##########export SCALA_HOME=/usr/local/scala-2.12.1export PATH=$PATH:$SCALA_HOME/bin

3.2 刷新配置文件:

source /etc/profile

3.3 將對應修改的spark目錄拷貝到slave節點

scp -r spark-2.4.4-bin-hadoop2.7 root@192.168.30.31:/root/spark

scp -r spark-2.4.4-bin-hadoop2.7 root@192.168.30.32:/root/spark

4. 啓動程序
4.1 啓動hadoop

4.1.1 格式化namenode

hadoop namenode -format

4.1.2 master啓動hadoop

cd /usr/local/hadoop-2.7.3/sbin

./start-all.sh

提示

start-all.sh                    //啓動master和slavesstop-all.sh                    //中止master和slaves

查看進程 master

[root@spark-master sbin]# jps8961 NodeManager8327 DataNode8503 SecondaryNameNode8187 NameNode8670 ResourceManager9102 Jps

[root@spark-master sbin]#

查看進程 slave

[root@spark-slave01 ~]# jps4289 NodeManager4439 Jps4175 DataNode

[root@spark-slave01 ~]#

slave01slve02slave03顯示相同

4.2 啓動spark

4.1.2 master啓動spark

cd /usr/local/spark-2.0.2/sbin

./start-all.sh

提示

start-all.sh                    //啓動master和slavesstop-all.sh                    //中止master和slaves

2.spark的使用

相關文章
相關標籤/搜索