(九)使用Ansible搭建分佈式大數據基礎環境-Spark On Yarn分佈式集羣搭建

“使用Ansible搭建分佈式大數據基礎環境”系列文章完整包含了如何使用Ansible這一分佈式運維利器,來幫我們快速搭建Hadoop2/Spark2/Hive2/ZooKeeper3/Flink1.7/ElasticSearch5等一整套大數據解決方案。本篇是系列文章的第九篇-Spark On Yarn模式搭建。敬請關注後續更多文章。

(一)使用Ansible搭建分佈式大數據基礎環境-環境準備
(二)使用Ansible搭建分佈式大數據基礎環境-Ansible項目創建
(三)使用Ansible搭建分佈式大數據基礎環境-編寫第一個playbook
(四)使用Ansible搭建分佈式大數據基礎環境-Ansible常用Module介紹
(五)使用Ansible搭建分佈式大數據基礎環境-ZooKeeper集羣模式搭建
(六)使用Ansible搭建分佈式大數據基礎環境-Hadoop高可用集羣搭建
(七)使用Ansible搭建分佈式大數據基礎環境-MySQL安裝
(八)使用Ansible搭建分佈式大數據基礎環境-Hive客戶端搭建
(九)使用Ansible搭建分佈式大數據基礎環境-Spark On Yarn安裝


Apache Spark 是專爲大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是——Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapReduce的算法。
本篇我們安裝的Hive版本是最新的spark-2.3.3-bin-hadoop2.7,使用YARN做爲資源管理器實現Spark集羣模式。

1. sparkcluster配置

Spark在Yarn模式下和Hive一樣,只需要作爲客戶端安裝,沒有集羣的概念,所有任務都會提交到遠程Yarn,由Yarn分配資源創建Container運行,這裏我們打開前面的production/hosts文件,添加Spark專屬cluster:

[cluster]
master1
master2
slave1

#以下爲mysql單獨創建
[mysqlcluster]
master2

#以下爲hive單獨創建
[hivecluster]
master2

#以下爲spark單獨創建
[sparkcluster]
master1
master2
slave1

2. 編寫tasks/main.yaml,完成spark安裝


---
- name: Create Spark Data Directory
  file: path={{data_base}}/spark state=directory

- name: Download spark file
  get_url: url='{{download_server}}/{{path}}/{{filename}}-{{version}}/{{filename}}-{{version}}-{{hadoopversion}}.{{suffix}}' dest="{{download_base}}/{{filename}}-{{version}}.{{suffix}}" remote_src=yes
  register: download_result

- name: Check whether registered
  stat:
    path: "{{app_base}}/{{filename}}-{{version}}-{{hadoopversion}}"
  register: node_files

- debug:
    msg: "{{node_files.stat.exists}}"

- name: Extract archive
  unarchive: dest={{app_base}} src='{{download_base}}/{{filename}}-{{version}}.{{suffix}}' remote_src=yes
  when: download_result.state == 'file' and node_files.stat.exists == False

- name: Add soft link
  file: src="{{app_base}}/{{filename}}-{{version}}-{{hadoopversion}}" dest={{app_base}}/{{appname}} state=link

- name: Add ENV SPARK_HOME
  become: yes
  lineinfile: dest=/etc/profile.d/app_bin.sh line="export SPARK_HOME={{app_base}}/{{appname}}"

- name: Export PATH
  become: yes
  lineinfile: dest=/etc/profile.d/app_bin.sh line="export PATH=$PATH:$SPARK_HOME/bin"

- name: Copy spark-env.sh
  copy: src="{{app_base}}/{{appname}}/conf/spark-env.sh.template" dest="{{app_base}}/{{appname}}/conf/spark-env.sh" remote_src=yes mode=0755

- name: Add Env HADOOP_CONF_DIR
  lineinfile: dest="{{app_base}}/{{appname}}/conf/spark-env.sh" line="HADOOP_CONF_DIR={{app_base}}/hadoop/etc/hadoop"

- name: Enable submit job in yarn mode by default in $SPARK_HOME/conf/spark-default.xml
  blockinfile:
    path: "{{app_base}}/{{appname}}/conf/spark-default.xml"
    block: |
      spark.driver.memory              2g
      spark.yarn.jars hdfs://master1:8020/hadoop/spark_jars/*
      spark.master                            yarn
      spark.executor.cores                    4
      spark.executor.memory                   8g
      spark.executor.instances                4

3. 創建spark.yaml,並運行ansible-playbook完成安裝


---
- hosts: sparkcluster
  remote_user: fangyu.fu

  roles:
    - spark
 $] ansible-playbook -i production/hosts spark.yaml

PLAY [sparkcluster] ****************************************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************************
ok: [master1]

TASK [spark : Create Spark Data Directory] *****************************************************************************************************************************************************
ok: [master1]

TASK [spark : Download spark file] *************************************************************************************************************************************************************
ok: [master1]

TASK [spark : Check whether registered] ********************************************************************************************************************************************************
ok: [master1e]

TASK [spark : debug] ***************************************************************************************************************************************************************************
ok: [master1] => {
    "msg": true
}

TASK [spark : Extract archive] *****************************************************************************************************************************************************************
skipping: [master1]

TASK [spark : Add soft link] *******************************************************************************************************************************************************************
ok: [master1]

TASK [spark : Add ENV SPARK_HOME] **************************************************************************************************************************************************************
ok: [master1]

TASK [spark : Export PATH] *********************************************************************************************************************************************************************
ok: [master1]

TASK [spark : Copy spark-env.sh] ***************************************************************************************************************************************************************
changed: [master1]

TASK [spark : Add Env HADOOP_CONF_DIR] *********************************************************************************************************************************************************
changed: [master1]

TASK [spark : Enable submit job in yarn mode by default in $SPARK_HOME/conf/spark-defaults.conf] ***********************************************************************************************
changed: [master1]

PLAY RECAP *************************************************************************************************************************************************************************************
master1 : ok=11   changed=3    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章