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&characterEncoding=utf8&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的命令提示符中,我們可以很容易的獲取以上伺服器資訊。但如果使用