日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境

發布時間:2023/11/27 生活经验 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近期需要整理MIT6.824 中 分布式系統協調服務 zookeeper 的一些知識,想要在Mac 本地搭建一個可以方便運行調試的zookeeper環境,這玩意竟然耗費了一上午的時間,實在是不可忍;當然,主要還是因為對Java的編譯運行環境 以及 周邊工具不太熟悉。

希望能夠為后續想要學習的同學們節省更多的時間。

OS環境:MAC
zookeeper 版本:3.5.8 (更高版本 因為變更了編譯配置,所以沒有去搞)
java環境:15.0.1

文章目錄

    • 1. 編譯前基本環境準備
    • 2. 編譯 及 導入 Intellij IDEA
    • 3. Zookeeper 運行環境配置

1. 編譯前基本環境準備

  • 安裝基本的java以及jdk
    運行java --version,顯示如下:

    表示java環境已經配置好了,不需要再進行java環境的配置。

    否則需要執行如下步驟:
    a. 安裝java brew install java
    b. 安裝jdk環境,通過https://www.oracle.com/java/technologies/javase-jdk15-downloads.html 下載mac操作系統的最新版本jdk,直接按照正常的軟件安裝方式安裝即可。

  • 安裝軟件,這里還是用強大通用的intellij-idea即可
    brew cask intall intellij-idea ,可能需要搞一個破解的,這里就看大家各顯神通了,淘寶、閑魚啥的

  • 安裝maven ,用來安裝java的包依賴
    brew install mvnvm
    最后運行mvn --version,顯示如下表示安裝成功

  • 通過mvn 安裝idea的java依賴包
    mvn -e idea:idea
    或者 也可以通過 后面下載好的zookeeper代碼中的pox.xml 導入到idea打開的zookeeper項目中

  • 安裝ant
    https://ant.apache.org/bindownload.cgi 下載最新的tar包,將解壓好的目錄中的bin文件可以添加到環境變量中export PATH=$PATH:/xxx/bin/。 大家都說這是一個巨古老的java編譯方式,比較好奇zookeeper為什么還會一直用

  • zookeeper 3.5.8 源碼準備

    git clone https://github.com/apache/zookeeper.git
    git checkout branch-3.5.8
    

2. 編譯 及 導入 Intellij IDEA

  • 編譯 zookeeper代碼
    a. cd zookeeper
    b. ant eclipse

  • 導入Intellij IDEA
    打開zookeeper目錄即可

  • 項目的依賴配置,這里主要是指定一下jdk版本即可
    command + ;打開項目配置
    或者 File --> Project Structure

    因為我們已經下載了最新版本的sdk,所以這里Add JDK之后會默認打開已經下載好的目錄,直接Open即可

  • 配置zookeeper項目的依賴包
    找到zookeeper目錄下的pox.xml文件,右鍵點擊 進行Reimport

3. Zookeeper 運行環境配置

  1. zoo.cfg 配置
    zookeeper服務運行的時候需要加載zoo.cfg 文件,這個文件默認是沒有的,但是zoo_sample.cfg 文件存儲在下載好的源碼目錄中:zookeeper/conf
    可以cp zoo_sample.cfg zoo.cfg,可以直接用默認的配置即可(測試也只是本地運行,非集群模式)

  2. zookeeper 的編譯運行配置
    zk的運行需要通過主類 org.apache.zookeeper.server.ZooKeeperServerMain 啟動

    編輯 run configuration

  3. 將主類信息,zoo.cfg絕對路徑,你的zookeeper主目錄添加進去
    如下:

  4. 運行

    點擊運行,Intellij IDEA會先編譯,再運行zk server

    如果,編譯過程中出現如下問題:
    a. SLF4J: Class path contains multiple SLF4J bindings. 同時這個錯誤下應該還會有兩個沖突路徑,大體原因是再初始化日志模塊時發現zk依賴了兩個日志類,java認為是有沖突的,我的做法是將其中的一個直接注掉(mv xx xx-bak),因為我的兩個沖突日志類是一樣的,之前執行mvn -e idea:idea的時候有一部分類導入了兩次。

    或者更好的解決辦法是 從項目的依賴中將另一個類的路徑 標記為exclude中的一項。

    b. log4j:WARN No appenders could be found for logger 這個問題同樣是日志問題,是找不到log4j的初始化配置,即同樣存在于目錄zookeeper/conf/log4j.properties文件。

    我的做法是直接將絕對路徑設置到運行時的編譯配置中。
    回到 Exit configuration command + option + r

    添加路徑:
    -Dlog4j.configuration=file:/Users/xxxxx/IdeaProjects/zookeeper/conf/log4j.propertiesVM options選項中即可

    再次運行 即zk sever 已經正常啟動,并輸出日志:

  5. 鏈接測試
    再用終端的zkCli.sh工具鏈接測試,能夠與server通信,進入zk交互命令行成功

    cd /zookeeper/bin  sh zkCli.sh
    ...
    2020-11-15 13:31:40,529 [myid:] - INFO  [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=
    Welcome to ZooKeeper!
    2020-11-15 13:31:40,539 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
    JLine support is enabled
    2020-11-15 13:31:40,554 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /127.0.0.1:58600, server: localhost/127.0.0.1:2181
    2020-11-15 13:31:40,599 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x10057c92b3d0000, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 4] stat /
    cZxid = 0x0
    ctime = Thu Jan 01 08:00:00 CST 1970
    mZxid = 0x0
    mtime = Thu Jan 01 08:00:00 CST 1970
    pZxid = 0x0
    cversion = -1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 1
    

總結

以上是生活随笔為你收集整理的zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。