1. 程式人生 > >基於CDH版本5.13.3驗證Spark Streaming

基於CDH版本5.13.3驗證Spark Streaming

  1. 實現背景

由於部門及已上專案使用的是CDH版本大資料平臺,為了更好改善線上生產系統日誌實時抓取分析。需要加裝Kafka作為採集資料來源,使用SparkStreaming處理資料。

  1. 安裝環境
    1. 硬體規劃

CPU

實體記憶體

磁碟儲存

節點

1核X2顆 Intel Core Processor 2295MHZ (Haswell, no TSX)

8GB

80G

192.17.10.136

1核X2顆 Intel Core Processor 2295MHZ (Haswell, no TSX)

8GB

80G

192.17.10.138

1核X2顆 Intel Core Processor 2295MHZ (Haswell, no TSX)

8GB

80G

192.17.10.139

    1. 軟體規劃

類別

軟體清單

備註

作業系統

CentOS Linux release 7.2.1511

大資料平臺

CDH5.13.1

Hadoop2.6.0

Spark1.6.0

Java1.7.0.9

MySql 5.7.21

Hive:1.1.0

Scala2.10.5

HBase

HDFS

Kafka3.1.0

    1. 目錄規劃
  1. CDH相關安裝目錄:/opt/cloudera/parcels/CDH
  2. Kafka安裝目錄:cct-bigdata-3節點 /opt/cloudera/parcels/KAFKA-3.1.0-1.3.1.0.p0.35
  1. 安裝步驟
    1. 環境配置

本次是基於已有CDH環境下,線上增加安裝Kafka服務。確保伺服器能正常連線外網,用於下載介質服務包。

    1. Kafka安裝
  1. 登入CM控制檯後,選擇“主機”—>選擇Parcel—>下載Kafka—>進行分配和啟用
  2. 進入群集中BigData CDH parcel—>滑鼠點選“操作”按鈕—>新增服務—>選擇Kafka服務項—>按照嚮導進行安裝(考慮服務節點硬體配置效能,安裝cct-bigdata-3節點)—>啟動Kafka服務
    1. 啟動驗證
  1. kafka-topics.sh --create --zookeeper cct-bigdata-3:2181 --replication-factor 1 --partitions 1 --topic test

注:topic是釋出訊息釋出的category,以單節點的配置建立了一個叫testtopic.可以用list列出所有建立的topics,來檢視剛才建立的主題是否存在。

  1. kafka-topics.sh --list --zookeeper cct-bigdata-3:2181

注:檢視topics訊息內容

  1. 用producer生產點資料:kafka-console-producer.sh --broker-list cct-bigdata-3:9092 --topic test

hello test

hello aaaa

hadoop first kafka

  1. 再次開啟新的終端或者直接按CTRL+C退出。然後使用consumer來接收資料。

kafka-console-consumer.sh --zookeeper cct-bigdata-3:2181 --topic test --from-beginning

正常會顯示前面三條訊息內容,這表示kafka安裝及服務成功。

  1. Kafka安裝相關問題
【報錯資訊】安裝kafka服務啟動,報ERROR kafka.tools.MirrorMaker$: whitelist must be specified when using new consumer in mirror maker.
【原因分析】白名單未配置問題導致的
【解決方法】需要新增配置如下圖畫紅框的引數
cct-bigdata-3:9092
【報錯資訊】安裝kafka服務啟動,報java.lang.OutOfMemoryError: Java heap space
Dumping heap to /tmp/kafka2_kafka2-KAFKA_BROKER-1e04967977cc5aba9079e526679ab18c_pid2185.hprof ...
Heap dump file created [13353447 bytes in 0.090 secs]
【原因分析】java記憶體過低導致broker啟動失敗,Java Heap size of Broker這個選項預設配置是 50M
【解決方法】進入CM配置kafka找到Java Heap size of Broker,建議修改最低配置記憶體不小於256M,此處可根據自己實體記憶體大小合理分配。
【報錯資訊】啟動kafka-console-producer --broker-list 127.0.0.1:9092 --topic test報18/07/06 09:00:57 WARN clients.NetworkClient: [Producer clientId=console-producer] Connection to node -1 could not be established. Broker may not be available
【原因分析】在配置plaintext的時候,地址配置的是cct-bigdata-3cct-bigdata-3是我在/etc/hosts檔案裡面配置的127.0.0.1,而我連線的時候,使用的是:127.0.0.1

【解決方法】改為和plaintext的地址配置一樣,才可以。kafka-console-producer --broker-list cct-bigdata-3:9092 --topic test

  1. Spark Streaming整合驗證
    1. 環境檢查
  1. 檢查org.apache.spark.streaming.kafka._相關包是否已具備,啟動spark-shell

如出現此圖反饋,則說明相關包都存在,否則需要到官網下載相對應版本的Jar包。

  1. 檢查Sbt,如無則需要安裝。安裝步驟:
  • 解壓下載包:tar zxvf sbt-1.0.3.tgz 解壓安裝目錄/usr/local/sbt
  • 建立啟動檔案:

cd /usr/local/sbt/

vi sbt

內容如下:

#!/bin/bash

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"

java $SBT_OPTS -jar /usr/local/sbt/bin/sbt-launch.jar "[email protected]"

  • 修改指令碼檔案許可權:chmod u+x sbt
  • 配置PATH環境變數:

可以選擇配置~/.bashrc 或 /etc/profile,此處以配置 /etc/profile為例

vi /etc/profile

在檔案尾部新增如下程式碼後,儲存退出

export PATH=/usr/local/sbt/:$PATH

使配置檔案立刻生效

source /etc/profile

  • 測試sbt是否安裝成功:sbt sbt-version
  1. 檢查maven
    1. 編寫Scala

Spark streaming測試案例原始碼存放目錄:/usr/local/mycode/spark/kafka/src/main/scala

  1. vi KaWordProducer.scala,此程式碼目的是生成一系列字串的程式,會產生隨機的整數序列,每個整數被當做一個單詞,提供給KafkaWordCount程式去進行詞頻統計。

原始碼見

  1. vi KaWordCount.scala,此程式碼目的是用於字元詞頻統計,它會把KaWordProducer傳送過來的單詞進行詞頻統計。

原始碼見

  1. vi StreamingExample.scala,此程式碼目的是用於設定log4j

原始碼見

  1. 新增依賴jar庫,編寫依賴託管編譯檔案simple1.sbt,內容如下:

name:= "Simple1 Project"

version:="1.0"

scalaVersion:="2.10.5"

libraryDependencies ++= Seq(

  // Spark dependency

  "org.apache.spark" %% "spark-core" % "1.6.0",

  "org.apache.spark" %% "spark-streaming" % "1.6.0",

  "org.apache.spark" %% "spark-streaming-kafka" % "1.6.0"

)

因為此案例依賴spark-core\spark-streaming\spark-streaming-kafka相關jar包,需要在打包編譯的時加入。

注意:Scala通過sbt打包編譯對程式碼存放目錄結構是有要求,具體示例如下:

[[email protected] kafka]# find .

.

./src

./src/main

./src/main/scala

./src/main/scala/KaWordProducer.scala

./src/main/scala/StreamingExample.scala

./src/main/scala/KaWordCount.scala

./simple.sbt

    1. 驗證Scala

測試上述已經編寫詞頻統計程式:

  1. Sbt編譯打包

/usr/local/sbt/sbt package

  1. Spark-submit提交已編譯隨機生成字元包

spark-submit --class org.apache.spark.examples.streaming.KaWordProducer /usr/local/mycode/spark/kafka/target/scala-2.10/simple-project_2.10-1.0.jar cct-bigdata-3:9092 wordsender 3 5

注意,上面命令中, cct-bigdata-3:9092 wordsender 3 5″是提供給KaWordProducer程式的4個輸入引數,第1個引數cct-bigdata-3:9092Kafkabroker的地址,第2個引數wordsendertopic的名稱,我們在KaWordCount.scala程式碼中已經把topic名稱寫死掉,所以,KaWordCount程式只能接收名稱為”wordsender”topic。第3個引數“3”表示每秒傳送3條訊息,第4個引數“5”表示,每條訊息包含5個單詞(實際上就是5個整數)。

這個終端視窗就放在這裡,不要關閉,由其一直不斷髮送單詞。在新的視窗開啟詞頻統計功能

  1. Spark-submit提交已編譯記錄詞頻包

spark-submit --class org.apache.spark.examples.streaming.KaWordCount /usr/local/mycode/spark/kafka/target/scala-2.10/simple-project_2.10-1.0.jar

如出現上圖內容,則表示kafka與SparkStreaming整合OK。

    1. 異常處理

【異常資訊】執行安裝配置sbt異常記錄

[[email protected] sbt]# sbt sbt-version

Getting org.scala-sbt sbt 0.13.17  (this may take some time)...

:: problems summary ::

:::: WARNINGS

                module not found: org.scala-sbt#sbt;0.13.17

        ==== local: tried

          /root/.ivy2/local/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

          -- artifact org.scala-sbt#sbt;0.13.17!sbt.jar:

          /root/.ivy2/local/org.scala-sbt/sbt/0.13.17/jars/sbt.jar

        ==== local-preloaded-ivy: tried

          file:////root/.sbt/preloaded/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

        ==== local-preloaded: tried

          file:////root/.sbt/preloaded/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.pom

          -- artifact org.scala-sbt#sbt;0.13.17!sbt.jar:

          file:////root/.sbt/preloaded/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.jar

        ==== Maven Central: tried

          https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.pom

          -- artifact org.scala-sbt#sbt;0.13.17!sbt.jar:

          https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.jar

        ==== typesafe-ivy-releases: tried

          https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

        ==== sbt-ivy-snapshots: tried

          https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

                ::::::::::::::::::::::::::::::::::::::::::::::

                ::          UNRESOLVED DEPENDENCIES         ::

                ::::::::::::::::::::::::::::::::::::::::::::::

                :: org.scala-sbt#sbt;0.13.17: not found

                ::::::::::::::::::::::::::::::::::::::::::::::

:::: ERRORS

        Server access Error: Received fatal alert: protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.pom

        Server access Error: Received fatal alert: protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.17/sbt-0.13.17.jar

        Server access Error: Remote host closed connection during handshake url=https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

        Server access Error: Remote host closed connection during handshake url=https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/0.13.17/ivys/ivy.xml

:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

unresolved dependency: org.scala-sbt#sbt;0.13.17: not found

Error during sbt execution: Error retrieving required libraries

  (see /root/.sbt/boot/update.log for complete log)

Error: Could not retrieve sbt 0.13.17

【原因分析】可能因伺服器採用的是虛擬機器網路問題或需要訪問國際網路服務,導致原有的https協議無法使用。

【解決方法】

通過修改sbt-launch.jar中sbt下sbt.boot.properties檔案中:

注意先備份sbt-launch.jar

1)、[repositories]原內容maven-central改成maven-central: http://repo1.maven.org/maven2

2)、[repositories]原內容typesafe-ivy-releases和sbt-ivy-snapshots:中的https改成http協議

3)、重新打包覆蓋掉sbt-launch.jar原檔案

4)、重新執行sbt sbt-version,第一次執行耗時大約需10多分鐘左右,下載所需依賴jar包。如成功的話,應顯示:

[warn] No sbt.version set in project/build.properties, base directory: /usr/local/sbt

[info] Set current project to sbt (in build file:/usr/local/sbt/)

[info] 0.13.17

【異常資訊】執行打包編譯sbt package時,出現無法下載對應依賴包

【原因分析】可能因伺服器採用的是虛擬機器網路問題或需要訪問國際網路服務,導致原有的https協議無法使用。

【解決方法】通過修改sbt-launch.jar中sbt下sbt.boot.properties檔案中:

注意先備份sbt-launch.jar

1)、[repositories]原內容maven-central改成maven-central: http://repo1.maven.org/maven2

2)、[repositories]原內容typesafe-ivy-releases和sbt-ivy-snapshots:中的https改成http協議

3)、重新打包覆蓋掉sbt-launch.jar原檔案

4)、重新執行sbt package,第一次執行耗時大約需10多分鐘左右,下載所需依賴jar包。

另外如果發現還有未下載依賴包失敗,可以單獨wget下載下來存放本地maven庫(注意根據報錯提示路徑存放),然後再重新打包sbt package即可。

相關推薦

基於CDH版本5.13.3驗證Spark Streaming

實現背景 由於部門及已上專案使用的是CDH版本大資料平臺,為了更好改善線上生產系統日誌實時抓取分析。需要加裝Kafka作為採集資料來源,使用SparkStreaming處理資料。 安裝環境 硬體規劃 CPU 實體記憶體

基於CDH版本5.13.3實現原生版Spark叢集及問題記錄

基於CDH版本5.13.3實現Spark叢集1.     安裝背景由於部門及已上專案使用的是CDH版本大資料平臺,為了充分更好使用Spark叢集Spark引擎運算,解決基於CDH版本下可支援3種大資料運算分析方式Hive on MR、Hive on Spark和Spark S

CDH升級 5.7.5 --> 5.13.3(tar包方式)

uuid 數據庫 rep 網絡 復制 www 拷貝 例如 tarball 一、準備 1、關閉cdh中的服務 hdfs、yarn等所有服務;關閉 cm-server、cm-agent;備份cm元數據庫。 2、下載   CDH-5.13.3-1.cdh5.13.3.p0.2-e

hadoop in hue的搭建(基於cdh版本)

backend hdf clust 無法訪問 error lib AI fs模塊 lda 首先官網下載tar包 http://archive.cloudera.com/cdh5/cdh/5/hue-3.9.0-cdh5.5.4.tar.gz 在安裝hue之前,還需要安裝各種

PhpStorm 2017.3 版本在 Mac 系統 macOS High Sierra 版本 10.13.3 中運行很卡頓

ima 新版本 php macos JD 卸載 jdk pst 卡頓 最近升級了系統,發現PHPStorm 運行一會兒就卡頓起來了,按網上的方法加大內存配置也是沒效果; 運行一會兒照樣卡頓,接著一會兒就要內存溢出了掛掉了; 想著最近只有升級過操作系統,並沒有升級JDK等版本

項目一:第十二天 1、常見權限控制方式 2、基於shiro提供url攔截方式驗證權限 3、在realm中授權 5、總結驗證權限方式(四種) 6、用戶註銷7、基於treegrid實現菜單展示

eal 重復數 規則 認證通過 delete get 數據庫 filter 登陸 1 課程計劃 1、 常見權限控制方式 2、 基於shiro提供url攔截方式驗證權限 3、 在realm中授權 4、 基於shiro提供註解方式驗證權限 5、 總結驗證權限方式(四種) 6、

spark遠端debug之除錯spark on yarn 程式(基於CDH平臺,1.6.0版本

簡介 由於spark有多種執行模式,遠端除錯的時候,雖然大體步驟相同,但是還是有小部分需要注意的地方,這裡記錄一下除錯執行在spark on yarn模式下的程式。 環境準備 需要完好的Hadoop,spark叢集,以便於提交spark on yarn程式。我這裡是基

題目: 2/1, 3/2, 5/3, 8/5, 13/8, 21 13 ...

core image src scanner find log out sum his java源碼: package studying; import java.util.Scanner; public class Sum_Of_FirstN {

struts升級2.3.12到2.5.13

type 需要 false sage cati exceptio marker escape .com 參考文章: http://www.ituring.com.cn/article/495914 http://blog.csdn.net/zhangchen1987/art

目前最新版本ActiveMQ 5.15.3 和JDK版本有關的問題

有關 pac min cto 分享圖片 官網 src img lang java.lang.UnsupportedClassVersionError: org/apache/activemq/ActiveMQConnectionFactory : Unsupported

基於CentOS7搭建mongodb(3.6.6版本

inux ruby listen b數 單表 ocs seve more 高性能 基於CentOS7搭建mongodb(3.6.6版本) mongodb簡介 Mongodb,分布式文檔存儲數據庫,由C++語言編寫,旨在為WEB應用提供可擴展的高性能數據存儲解決方案。Mon

Archlinux配置~小米筆記本Air 13.3英寸版本

ios 超級用戶 run lin 應該 rtl 一個 scree 解壓縮 1 、zsh echo $ SHELL \\查看當前正在使用shell: pacman -S zsh zsh-s

新思科技釋出Seeker最新版本 可針對基於 Web 的應用進行主動驗證和敏感資料跟蹤

法國Parkeon公司託管企業服務部首席資訊保安官曾經表示:“我們選擇Seeker是因為測試人員和開發人員不需要投入很多時間或者具備十分專業的知識就可以定期執行安全測試任務。Seeker提供漏洞與受影響原始碼之間的關聯,從而減少開發人員的工作量。 近日,美國新思科技公司(Synopsys,

如何用基於resnet的Unet進行影象分割 基於Pytorch-0.5版本

1、關於Unet       Unet主要用於醫學影象的很多論文中,以及Kaggle競賽和一些其他競賽中“少類別”的影象分割。從我做實驗的經驗來說,像VOC這種類別比較多的分割任務,不容易收斂,效果較為差。 2、Resnet34   &n

【ECLIPSE 二】eclipse java web 版本修改問題 3.0-2.5

這個是正常修改的,但是高版本向低版本改的時候有會報錯:cannot change version of project facet dynamic web module to 2.5 可以修改專案中的    .settings/org.eclipse.wst.

CAS 5.1.X版本自定義jdbc驗證

一、前言 在不同的專案中,可能由於業務需求或者架構方式的不同,對於使用者登入的驗證方式也不同。CAS為我們提供了很多的認證模式,其中最常見的認證方式有: JDBC認證,可以通過配置,也可以重寫cas相關方法進行自定義認證 LDAP認證 Basic認證 Sh

13.3.5 【介面和委託的泛型可變性】限制和說明

1. 不支援類的型別引數的可變性 只有介面和委託可以擁有可變的型別引數。即使類中包含只用於輸入(或只用於輸出)的類型引數,仍然不能為它們指定 in 或 out 修飾符。例如, IComparer<T> 的公共實現 Comparer<T>是不變的——不能將 Comparer<IS

13.3.5 【接口和委托的泛型可變性】限制和說明

風格 聲明 gate 兩個類 未來 應用 選擇 並且 發生 1. 不支持類的類型參數的可變性 只有接口和委托可以擁有可變的類型參數。即使類中包含只用於輸入(或只用於輸出)的類型參數,仍然不能為它們指定 in 或 out 修飾符。例如, IComparer<T>

5.13.1.3 jmeter元件-非測試元件—HTTP代理伺服器--HTTPS證書及其安裝

關於HTTPS證書 HTTP協議採用明文傳輸資料,如果是敏感資料,就不安全了,HTTPs(安全套接字層超文字傳輸協議)採用密文傳輸資料,在通訊中需要獲得伺服器的證書(公鑰) HTTPS連線使用證書來驗證瀏覽器和Web伺服器之間的連線。當通過HTTPS連線時,伺服

ACMNO.12有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10

題目描述 有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10 樣例輸出 16.48 來源/分類 C語言 題目