1. 程式人生 > >spark叢集搭建與mysql元資料管理

spark叢集搭建與mysql元資料管理

找個spark叢集搭建是針對於上一篇hadoop的基礎上搭建的。
所以spark的版本也是要按照著hadoop版本進行下載。

1.解壓spark,修改spark的/etc/profile的home目錄。

2.安裝SCALA,並配置SCALA_HOME。

3.修改spark conf目錄下的spark-env.sh檔案,並新增下列配置    
    export JAVA_HOME=/root/java/jdk1.8.0_181
    export HADOOP_HOME=/root/hadoop/hadoop-2.7.6
    export HADOOP_CONF_DIR=/root/hadoop/hadoop-2.7.6/etc/hadoop
    export SCALA_HOME=/root/scala/scala-2.11.8
    export SPARK_MASTER_IP=192.168.124.132

4.修改spark conf目錄下的slavers檔案配置:
    centos01
    centos02
    centos03

5.分發spark到其它節點,包括/etc/profile檔案
    scp -r /etc/profile [email protected]:/etc/
    scp -r ~/spark [email protected]:/root/

5.測試spark yarn提交模式,在spark example目錄下有個PI運算jar包
    spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster spark-examples_2.11-2.3.0.jar 10

    利用spark-shell --master yarn進行測試,會出現異常:
    2018-08-27 01:01:30 ERROR SparkContext:91 - Error initializing SparkContext.
    org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.

at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:89)
    at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:63)
    at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:164)
    利用http://192.168.124.132:8088/cluster/app/application_1535337995441_0003:
    檢視Diagnostics(診斷)發現報錯虛擬記憶體超過了:
    is running beyond virtual memory limits.
    Current usage: 40.9 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.

    配置yarn-site.xml:
    <!--以下為解決spark-shell 以yarn client模式執行報錯問題而增加的配置,估計spark-summit也會有這個問題。2個配置只用配置一個即可解決問題,當然都配置也沒問題-->
    <!--虛擬記憶體設定是否生效,若實際虛擬記憶體大於設定值 ,spark 以client模式執行可能會報錯,"Yarn application has already ended! It might have been killed or unable to l"-->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
        <description>Whether virtual memory limits will be enforced for containers</description>
    </property>
    <!--配置虛擬記憶體/實體記憶體的值,預設為2.1,實體記憶體預設應該是1g,所以虛擬記憶體是2.1g-->
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>4</value>
        <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
    </property>


6.配置spark sql的metastore到mysql進行管理
    檢視機器是否安裝過mysql:rpm -qa|grep -i mysql
    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
    rpm -ivh mysql57-community-release-el7-8.noarch.rpm
    yum install mysql-community-server

    安裝完成後,重啟mysql:service mysqld restart
    然後檢視初始密碼:grep "password" /var/log/mysqld.log
    登陸mysql,修改密碼~!:alter user 'root'@'localhost' identified by '[email protected]';
    重新整理許可權:flush privileges;

7.把jdbc的jar包複製到spark jars目錄下:(注意:使用5版本的可以避免出現時區問題)
    網上下載mysql jdbc驅動,需要注意驅動和mysql的版本~!
    網上下載https://dev.mysql.com/downloads/connector/j/
    rpm包解壓:rpm2cpio mysql-connector-java-8.0.12-1.el7.noarch.rpm | cpio -div
    把jdbc驅動複製到spark jars目錄:cp mysql-connector-java-8.0.12.jar ~/sparkapp/spark-2.3.0-bin-hadoop2.7/jars/

8.在spark conf目錄下建立一個hive-site.xml檔案:
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hiveMetastore?createDatabaseIfNotExist=true&amp;characterEncoding=utf8&amp;useSSL=false</value>
    <description>hiveMetastore:Metastore sive in mysql</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>e
    <description>mysql account</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>[email protected]</value>
    <description>mysql password</description>
  </property>
</configuration>

9.在mysql上建立相關的spark元資料資料庫,和檢視:
    mysql:
    create database sparkmetastore;
    use sparkmetastore;

    create view databases_v 
    as select DBS.* 
    from hiveMetastore.DBS;

    create view tables_v 
    as select TBLS.*, DBS.NAME 
    from hiveMetastore.DBS, hiveMetastore.TBLS 
    where TBLS.DB_ID=DBS.DB_ID AND TBLS.TBL_TYPE!='VIRTUAL_VIEW';

    create view views_v 
    as select TBLS.*, DBS.NAME 
    from hiveMetastore.DBS, hiveMetastore.TBLS 
    where TBLS.DB_ID=DBS.DB_ID AND TBLS.TBL_TYPE='VIRTUAL_VIEW';

    create view columns_v 
    as select COLUMNS_V2.*, TBLS.TBL_NAME, DBS.NAME 
    from hiveMetastore.DBS, hiveMetastore.TBLS, hiveMetastore.COLUMNS_V2
    where DBS.DB_ID = TBLS.DB_ID AND COLUMNS_V2.CD_ID = TBLS.TBL_ID;

10.再在mysql上建立一個使用者,該使用者為spark-sql jdbc元資料查詢使用者:
    CREATE USER 'spark'@'%' IDENTIFIED BY '[email protected]';
    GRANT SELECT ON sparkmetastore.* TO 'spark'@'%';

11.在spark-sql中進行反向查詢元資料:
    create database spark;
    CREATE TABLE databases_v USING org.apache.spark.sql.jdbc OPTIONS("url" "jdbc:mysql://192.168.124.132:3306", "dbtable" "sparkmetastore.databases_v","user" "spark", "password" "[email protected]")
    CREATE TABLE tables_v USING org.apache.spark.sql.jdbc OPTIONS("url" "jdbc:mysql://192.168.124.132:3306", "dbtable" "sparkmetastore.tables_v","user" "spark", "password" "[email protected]")
    CREATE TABLE views_v USING org.apache.spark.sql.jdbc OPTIONS("url" "jdbc:mysql://192.168.124.132:3306", "dbtable" "sparkmetastore.views_v","user" "spark", "password" "[email protected]")
    CREATE TABLE columns_v USING org.apache.spark.sql.jdbc OPTIONS("url" "jdbc:mysql://192.168.124.132:3306", "dbtable" "sparkmetastore.columns_v","user" "spark", "password" "[email protected]")

12.開啟spark sbin./start-thriftserver.sh服務。

13.在遠端root訪問hdfs的時候,會出現許可權問題:
    在hdfs-site.xml加入找個配置
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>btd-dev-2027700.lvs02.dev.ebayc3.com:50090</value>
    </property>
    <!-- hdfs用root登陸的時候會出現許可權錯誤>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
        <description>
        If "true", enable permission checking in HDFS.
        If "false", permission checking is turned off,
        but all other behavior is unchanged.
        Switching from one parameter value to the other does not change the mode,
        owner or group of files or directories.
    </description>

14.配置spark-default.conf:(一定要把spark-warehouse設定儲存到hdfs上,不然會出現錯誤)
    spark.master yarn

   spark.sql.warehouse.dir hdfs://centos01:9000/spark-warehouse

相關推薦

spark叢集搭建mysql資料管理

找個spark叢集搭建是針對於上一篇hadoop的基礎上搭建的。 所以spark的版本也是要按照著hadoop版本進行下載。 1.解壓spark,修改spark的/etc/profile的home目錄。 2.安裝SCALA,並配置SCALA_HOME。 3.修改spar

Spark叢集搭建並驗證環境是否搭建成功(三臺機器)

在之前hadoop的基礎上,進行Spark分散式叢集: (1)下載Spark叢集需要的基本軟體,本篇需要的是:Scala-2.10.4、spark-1.4.0-bin-hadoop (2)安裝Spar

spark叢集搭建叢集上執行wordcount程式

Spark 配置 1、master 機器 Spark 配置 進入 Spark 安裝目錄下的 conf 目錄, 拷貝 spark-env.sh.template 到 spark-env.sh。 cp spark-env.sh.template spark-e

資料spark叢集搭建

建立spark使用者組,組ID1000 groupadd -g 1000 spark 在spark使用者組下建立使用者ID 2000的spark使用者 獲取視訊中文件資料及完整視訊的夥伴請加QQ群:947967114useradd -u 2000 -g spark spark 設定密碼 passwd

資料十二 spark叢集搭建

Spark standalone 到官網下載 spark 的安裝包,這裡使用 spark-1.6.3,hadoop版本是 2.6.5 解壓,改名為 spark-1.6.3 進入 conf 目錄下,使用如下命令 cp slaves.templa

資料倉庫資料管理標準化

1. 前言 在事務處理系統中的資料,主要用於記錄和查詢業務情況。隨著資料倉庫(DW)技術的不斷成熟,企業的資料逐漸變成了決策的主要依據。資料倉庫中的資料是從許多業務處理系統中抽取、轉換而來,對於這樣一個複雜的企業資料環境,如何以安全、高效的方式來對它們進行管理和訪問就變得尤為重要。解決這一問題的關鍵是對元

餓了麼資料管理實踐之路

一、背景 大資料挑戰 大資料時代,餓了麼面臨資料管理、資料使用、資料問題等多重挑戰。具體可以參考下圖: 資料問題:多種執行、儲存引擎,分鐘、小時、天級的任務排程,怎樣梳理資料的時間線變化? 資料使用:任務、表、列、指標等資料,如何進行檢索、複用、清理、熱度Top計算? 資料管理:怎樣對錶、列、指

Redis叢集搭建維護

一、概述     Redis3.0版本之後支援Cluster. 二、redis cluster安裝     1、下載和解包 cd /usr/local/ wget http://download.redis.io/releases/re

資料管理】Atlas術語(Glossary)

Atlas的術語表(Glossary)提供了一些適當的“單詞”,這些“單詞”能彼此進行關連和分類,以便業務使用者在使用的時候,即使在不同的上下文中也能很好的理解它們。此外,這些術語也是可以對映到資料資產中的,比如:資料庫,表,列等。 術語表抽象出了和資料相關的專業術語,使得使用者能以他們更熟悉的方式去查詢和

Elasticsearch mysql 同步資料 (logstash-input-jdbc)

ELK部署參考: https://blog.csdn.net/gekkoou/article/details/80979374 本文使用 logstash 外掛 jdbc 來實現 elasticsearch 同步 mysql 資料 外掛 jdbc 官方詳解: https://www

使用Atlas進行資料管理之Atlas簡介

背景:筆者和團隊的小夥伴近期在進行資料治理/元資料管理方向的探索, 在接下來的系列文章中, 會陸續與讀者們進行分享在此過程中踩過的坑和收穫。 元資料管理系列文章: [0] - 使用Atlas進行元資料管理之Atlas簡介 [1] - 使用Atlas進行元資料管理之Glossary(術語) [2]

hadoop及spark叢集搭建後續

問題1:檢視 jps,裡面只有HQuorumPeer,沒有 HRegionServer 檢視logs,master rejected startup because clock is out of sync 原因:幾臺機器時間對不上 解決方法:將有問題機器的時間校正 date -s

Hadoop及spark叢集搭建踩過的坑

本叢集總共有三臺主機,一臺master,兩臺slave Hadoop有一個節點無法啟動 在按照教程子雨大資料之Spark入門教程(Python版)搭建Hadoop叢集時,執行jps命令,發現master和其中一個slave能正常工作,執行./bin/yarn node -lis

使用Atlas進行資料管理之Glossary

背景:筆者和團隊的小夥伴近期在進行資料治理/元資料管理方向的探索,在接下來的系列文章中,會將經驗與收穫和讀者們進行分享。 0. 當我們談論資料治理/元資料管理的時候,我們究竟在討論什麼? 談到資料治理,自然離不開元資料。元資料(Metadata),用一句話定義就是:描述資料的資料。元資料打通了資

MongoDB叢集搭建java程式碼操作MongoDB示例

MongoDB叢集搭建與java程式碼操作MongoDB示例 MongoDB叢集搭建過程 java使用MongoDB叢集Demo MongoDB叢集搭建過程 1. MongoDB Replica set叢集搭建準備(主從仲裁) 介

使用Atlas進行資料管理之容錯和高可用

1. 介紹 Apache Atlas使用各種系統並與之互動,為資料管理員提供元資料管理和資料血緣資訊。通過適當地選擇和配置這些依賴關係,可以使用Atlas實現高度的服務可用性。本文件介紹了Atlas中的高可用性支援狀態,包括其功能和當前限制,以及實現此高級別可用性所需的配置。 在高階架構章節(請參閱我翻譯

spark core 記錄-persist對資料的操作的影響

1、在同一個rdd上,做不同轉換的操作時,並不會改變這個rdd上的值,也不會影響其他rdd上使用原資料的結果 case class Name(var name: String, var age: Int, sex: Int) object DateTest {   

Hadoop叢集搭建經驗總結

(002)最近要研發一款資料傳輸服務的產品需要用到Hadoop叢集,之前搭建過後來長時間不用就給忘記了,這次搭好來記錄一下搭建方法與經驗總結 Hadoop叢集的搭建 原料: VM虛擬機器 JDK1.8 hadoop2.7.3 注:將jdk1.8.ta

Spark學習記錄(二)Spark叢集搭建

Hadoop  Spark叢集搭建,以及IDEA遠端除錯 環境:Hadoop-2.7.2  jdk-1.8   scala-2-11-12  spark-2.1.0 spark2.0.0開始,只支援Java8版本了,

吳裕雄 27-MySQL 資料

你可能想知道MySQL以下三種資訊:查詢結果資訊: SELECT, UPDATE 或 DELETE語句影響的記錄數。資料庫和資料表的資訊: 包含了資料庫及資料表的結構資訊。MySQL伺服器資訊: 包含了資料庫伺服器的當前狀態,版本號等。在MySQL的命令提示符中,我們可以很容易的獲取以上伺服器資訊。但如果使用