1. 程式人生 > 其它 >Spark詳解(09) - Spark調優

Spark詳解(09) - Spark調優

前言

隨著專案團隊規模日益壯大,專案程式碼量也越來越多。且不說團隊成員編碼水平層次不齊,即便是老手,也難免因為程式碼量的增加和任務的繁重而忽略程式碼的質量,最終的問題便是bug的增多和程式碼債務的堆積。

因此,程式碼review便日益提上了日程。當然人工review的效率還是相當低下的,於是我們採用了自動化程式碼review的工具,便是今天的主角:SonarQube。

 

SonarQube簡介

官方網站:https://www.sonarqube.org/

SonarQube 是一個用於管理原始碼質量開放平臺,它可以從多個維度檢測程式碼質量,可以快速的定位程式碼中潛在的或者明顯的 Bug、錯誤。

它支援包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多種程式語言的程式碼質量管理與檢測。可作為我們日常開發中檢測程式碼質量的重要工具。

SonarQube® 可以與您現有的工作流程整合,以便在專案分支和拉取請求之間進行連續的程式碼檢查。比如:

  • SonarQube整合gitlab,在分支推送的時候自動進行程式碼檢查分析,生成程式碼報告。
  • SonarQube整合jenkins,在程式碼構建的時候自動進行程式碼分析,生成程式碼報告。

總之,SonarQube是可以配合一切好用的CI/CD工具進行自動化分析程式碼並生成程式碼報告,通過報告我們可以看到程式碼中可能存在的bug和程式碼債務。

 

環境、軟體準備

以下是安裝的軟體及版本:

  • 伺服器:CentOS7
  • SonarQube:version 7.7
  • Jdk:version 1.8.0_91
  • Maven:version 3.5.3
  • Mysql: version 5.7.15

注意:下邊我們要演示 Maven 專案如何使用 SonarQube 分析,所以需要先安裝 Maven、Jdk,SonarQube 安裝我們使用 Mysql 作為資料儲存,所以需要先安裝 Mysql,這裡 Maven、Jdk、Mysql 的安裝忽略。

 

SonarQube安裝

本文下載的版本是Sonarqube-7.7

下載地址:https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip

SonarQube 的安裝包是不分平臺的,預設把所有平臺的執行命令都下載下來,使用者根據不同環境執行不同的執行指令碼。

1、下載SonarQube安裝包
[root@Zabbix ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip

2、解壓SonarQube安裝包

[root@Zabbix ~]# unzip sonarqube-7.7.zip
[root@Zabbix ~]# mv sonarqube-7.7 /usr/local/sonarqube
  • bin:目錄存放了各個環境的啟動指令碼
  • conf:目錄存放著sonarqube的配置檔案
  • logs:目錄存放著啟動和執行時的日誌檔案
  • data:用來存放資料,SonarQube預設使用 h2 資料庫儲存,同時支援其他如Mysql、Orace、Mssql、Postgresql資料庫儲存

3、配置SonarQube

# 我們首先需要通過配置檔案修改sonarqube的Mysql連線字串等資訊,開啟conf目錄的sonar.properties

[root@Zabbix ~]# vim /usr/local/sonarqube/conf/sonar.properties

埠的配置按照預設配置:

sonar.web.port=9000
sonar.search.port=9001

配置資料庫資訊:

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://MYSQLSERVER_IP:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

注:Mysql版本需大於或等於5.6且小於8.0

4、建立資料庫及授權

mysql> create database sonarqube;
mysql> grant all on sonarqube.* to sonarqube@'%' identified by '123456';
mysql> flush privileges;

5、啟動SonarQube

啟動需要授權給一個非root的使用者,sonarqube及其es等軟體禁止root賬戶啟動,因此需要切換一個非root賬戶,授權的使用者需要有bin目錄及其子目錄的讀取和可執行的許可權。

然後我們找到對應平臺的指令碼,我的系統是64位的linux,進入linux-x86-64目錄

# 授權

[root@Zabbix ~]# chown -R admin.admin /usr/local/sonarqube

# 啟動

[root@Zabbix ~]# su - admin
[admin@Zabbix ~]$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start

# 查詢埠

[admin@Zabbix ~]$ netstat -lntup

# 啟動之後,我們瀏覽器訪問對應伺服器IP地址的9000埠(防火牆要提前放行9000埠)

如果沒有成功,那麼就在logs目錄檢視啟動日誌。一般有幾種:

  • 1)es.log         # ES或Mysql等資料庫連線報錯,一般是Mysql的連線字串賬號密碼錯誤或者sonar賬號許可權不夠;
  • 2)es.log         # 資料庫初始化失敗MySQL sonar賬戶許可權不足
  • 3)sonar.log    # sonar服務的啟動日誌
  • 4)web.log      # sonarqube web的啟動日誌

6、訪問SonarQube

# 預設賬號密碼admin

# 登入後介面

7、Plugins 外掛安裝

SonarQube 外掛安裝非常簡單,同時 官網外掛庫 提供了很多實用的外掛供大家下載使用。SonarQube已經預設給我們安裝了一些很常用的外掛,我們可以通過admin登入,點選 配置 -> 系統 -> 更新中心 -> Installed 檢視。

SonarQube 支援分析的語言有很多,像Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C等20+語言,當我們需要支援分析什麼語言時,只需要去外掛中心安裝對應語言的外掛即可,非常方便,可擴充套件性強。

這裡我們演示安裝兩個很實用的外掛,一個是 Chinese Pack(SonarQube的漢化包),一個是 Checkstyle(檢測程式碼風格)。

# Chinese Pack 外掛安裝

登陸之後點選administration:

安裝完之後看頁面上邊:

之後再次登陸就更新了:

# Checkstyle 外掛安裝

在 SonarQube 網頁上直接點選安裝。admin 登入,點選 配置 -> 系統 -> 更新中心 -> Available -> Search,輸入 CheckStyle,

在搜素結果中找到 CheckStyle 外掛點選 Install,等待下載完成後,按照頁面提示點選 Restart 自動重啟服務即可完成安裝。

SonarQube分析Maven專案

1、在maven的中找到setting配置檔案。在setting.xml中增加sonarqube配置。如下:

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- 配置 Sonar Host地址,預設:http://localhost:9000 -->
                <sonar.host.url>http://myserver:9000/sonar/</sonar.host.url>
          <sonar.login>7895sdf8594sdfs65ewfds9854seese65</sonar.login> </properties> </profile> </profiles> </settings>

2、然後就可以在我們 Maven 工程目錄執行:

mvn clean verify sonar:sonar 或 mvn clean install sonar:sonar

注:如果是使用jenkins和maven編譯,還可在jenkins上具體專案中的構建中配置:

clean verify sonar:sonar -Dsonar.projectVersion=$appVersion -Dsonar.projectKey=ups_sas

3、執行完畢之後,可以去 web頁面檢視分析結果:

http://myserver:9000/sonar/

 

SonarQube與Jenkins整合

1.   安裝Jenkins

這裡不介紹。

2.  安裝SonarQube Scanner外掛

2.1.  安裝外掛

https://plugins.jenkins.io/sonar

 

安裝完後重啟jenkins。

2.2.  配置SonarQube

首先,在SonarQube中生成一個Token(PS:用token代替輸入使用者名稱和密碼):

然後,在Jenkins中配置連線sonarqube伺服器的地址,這裡用到的token就是剛才在sonarqube中建立的那個token:

最後,配置全域性工具配置:

3.  建立任務

 

最最重要的是,配置SonarQube analysis properties

sonar.projectKey=ks-cms-unicorn
sonar.projectName=ks-cms-unicorn
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

本例中,建立了兩個任務,方法同上。

 

可以看到,每次構建任務都會生成一次報告。這種方式比Maven那種方式要好很多,在實際的專案中多用此方式。

 

 

引用:

  • https://www.yangxingzhen.com/7262.html
  • https://www.cnblogs.com/cjsblog/p/10740840.html