1. 程式人生 > >window下zookeeper的下載啟動和報錯等問題

window下zookeeper的下載啟動和報錯等問題

前言

在使用dubbo等需要用到zookeeper,之前window下本地部署,啟動一直有問題,後面折騰了下才部署成功,此次記錄下來,以備後用。

下載

百度或者google下zookeeper官網,裡面就有下載的選項,還有其他的說明。簡單下載下來就好了。

What is ZooKeeper?
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of
these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable. Because of the difficulty of implementing these kinds of services, applications initially usually skimp on
them ,which make them brittle in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed. Learn more about ZooKeeper on the ZooKeeper Wiki.

配置

將zookeeper下載之後,解壓到指定目錄即可,無需安裝。例如:解壓到D:\Program Service Files\zookeeper-3.5.0-alpha。(下載的是3.5.0版本)
解壓好了之後,進入conf資料夾,會發現有2個檔案,log4j.properties和zoo_sample.cfg這2個檔案。對於zoo_sample.cfg檔案,需要先將檔名字修改成zoo.cfg檔案才行,接下來修改裡面配置,如下所示,給出了註釋和簡單的配置資訊。

# ZK中的一個時間單元。ZK中所有時間都是以這個時間單元為基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。
tickTime=2000

# Follower在啟動過程中,會從Leader同步所有最新資料,然後確定自己能夠對外服務的起始狀態。Leader允許F在 initLimit 時間內完成這個工作。
initLimit=10

# 在執行過程中,Leader負責與ZK叢集中所有機器進行通訊,例如通過一些心跳檢測機制,來檢測機器的存活狀態。
syncLimit=5

# 儲存快照檔案snapshot的目錄。預設情況下,事務日誌也會儲存在這裡。建議同時配置引數dataLogDir, 事務日誌的寫效能直接影響zk效能。
dataDir=D:/Program Service Files/zookeeper-3.5.0-alpha/data

# 事務日誌輸出目錄。儘量給事務日誌的輸出配置單獨的磁碟或是掛載點,這將極大的提升ZK效能。 
dataLogDir=D:/Program Service Files/zookeeper-3.5.0-alpha/dataLog

# 客戶端連線server的埠,即對外服務埠,一般設定為2181吧。
clientPort=2181

# 單個客戶端與單臺伺服器之間的連線數的限制,是ip級別的,預設是60,如果設定為0,那麼表明不作任何限制。
#maxClientCnxns=60

#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

注:dataDir和dataLogDir資料夾,注意window下的/和\的處理方式。

啟動錯誤

配置完成之後,就可以進入bin目錄下,啟動zkService.cmd了,當頁面滾動時,證明啟動成功了。
但是,我們會經常遇到雙擊啟動時,一閃而過的場景,此時會什麼錯誤資訊都看不到,最好的方式就是採取cmd啟動,這樣能看到報錯資訊。
如下,在此資料夾開啟cmd執行如下命令,就會看到報錯資訊了。

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd

不會像之前出現一閃而過的場景了。

問題1

當啟動zkService.cmd時,提示如下錯誤。找不到JAVA_HOME,提示沒有正確設定,檢查了下是有設定的。

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd
系統找不到指定的路徑。
Error: JAVA_HOME is incorrectly set.

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>call  "-Dzookeeper.log.dir=D:
\Program Service Files\zookeeper-3.5.0-alpha\bin\.." "-Dzookeeper.root.logger=IN
FO,CONSOLE" -cp "D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\build\cla
sses;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\build\lib\*;D:\Progra
m Service Files\zookeeper-3.5.0-alpha\bin\..\*;D:\Program Service Files\zookeepe
r-3.5.0-alpha\bin\..\lib\*;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..
\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\Program Service Fil
es\zookeeper-3.5.0-alpha\bin\..\conf\zoo.cfg"
'"-Dzookeeper.log.dir=D:\Program Service Files\zookeeper-3.5.0-alpha\bin\.."' 不
是內部或外部命令,也不是可執行的程式
或批處理檔案。

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>endlocal

通過查詢google發現,是因為我們的java安裝在瞭如下目錄:

C:\Program Files\Java

這個路徑中,program files含有空格,所以導致找不到java路徑。此時,可在bin同級目錄下,找到
zkEnv.cmd這個命令。用文字方式開啟,可以看到如下內容:

set ZOOCFG=%ZOOCFGDIR%\zoo.cfg

@REM setup java environment variables

if not defined JAVA_HOME (
  echo Error: JAVA_HOME is not set.
  goto :eof
)

if not exist %JAVA_HOME%\bin\java.exe (
  echo Error: JAVA_HOME is incorrectly set.
  goto :eof
)

set JAVA=%JAVA_HOME%\bin\java

報錯資訊剛好是找不到java.exe,此時進行修改即可。對路徑加入”“處理,如下所示:

@REM setup java environment variables

if not defined JAVA_HOME (
  echo Error: JAVA_HOME is not set.
  goto :eof
)

if not exist "%JAVA_HOME%\bin\java.exe" (
  echo Error: JAVA_HOME is incorrectly set.
  goto :eof
)

set JAVA=%JAVA_HOME%\bin\java

如上所示,這樣就能找到java路徑了。正確啟動了。
類似的還能發現會出現【JAVA_HOME is not set】、【JAVA_HOME is incorrectly set】處理方式都一樣了。
注:google說的是因為program files含有空格導致的,按照目前實驗來看,估計還是因為window下\和/的問題導致的,引號之後,就能全部當作字串路徑處理了,需要做個實驗看看。

問題2

當修改完成之後,再次cmd下啟動,會發現還會報錯,提示 ‘C:\Program’ 不是內部或外部命令,也不是可執行的程式或批處理檔案 報錯資訊如下:

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>call C:\Program Files\Java\jd
k1.7.0_79\bin\java "-Dzookeeper.log.dir=D:\Program Service Files\zookeeper-3.5.0
-alpha\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Program Service Fi
les\zookeeper-3.5.0-alpha\bin\..\build\classes;D:\Program Service Files\zookeepe
r-3.5.0-alpha\bin\..\build\lib\*;D:\Program Service Files\zookeeper-3.5.0-alpha\
bin\..\*;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\lib\*;D:\Program
Service Files\zookeeper-3.5.0-alpha\bin\..\conf" org.apache.zookeeper.server.quo
rum.QuorumPeerMain "D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\conf\z
oo.cfg"
'C:\Program' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。

D:\Program Service Files\zookeeper-3.5.0-alpha\bin>endlocal

根據前面來看,估計還是window下的設定問題,和前面一樣,此時繼續修改zkEnv.cmd檔案,修改如下:

@REM setup java environment variables

if not defined JAVA_HOME (
  echo Error: JAVA_HOME is not set.
  goto :eof
)

if not exist "%JAVA_HOME%\bin\java.exe" (
  echo Error: JAVA_HOME is incorrectly set.
  goto :eof
)

set JAVA="%JAVA_HOME%\bin\java"

將最後的set JAVA也用引號處理了,這樣修改之後,再次啟動就好了。

相關推薦

windowzookeeper下載啟動問題

前言 在使用dubbo等需要用到zookeeper,之前window下本地部署,啟動一直有問題,後面折騰了下才部署成功,此次記錄下來,以備後用。 下載 百度或者google下zookeeper官網,裡面就有下載的選項,還有其他的說明。簡單下載下來就好了。

window mysql5.7.12安裝記錄

1)官網下載mysql5.7.17解壓 my-default.ini檔案命名為my.ini: ---------------------------------------------------------------------------------- # For

【Kotlin】spring boot項目中,在Idea啟動@Configuration class 'BugsnagClient' may not be final.

post open conf png spa temp 技術 dea and 報錯如下: Exception encountered during context initialization - cancelling refresh attempt: org.spr

STSSpring boot 可以正常啟動,但是debug啟動下面,jdk重新已經安裝在非中文,無空格目錄

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 2018-05-16 11:27:33.324

windows es安裝ik後無法啟動

1、沒有安裝分詞器時可以正常啟動 2、在安裝分詞器後就報錯了 錯誤資訊: Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "D:

Linux啟動rabbitmq:./rabbitmq-server: line 80: erl: command not found的解決辦法

樓主今天在linux下啟動rabbitmq的時候,發生瞭如下圖的錯誤: 網上搜索得到了答案,現在分享給大家: 在linux的/etc/profile環境下新增如下兩行程式碼: #set erlang environment export PATH=$PATH:/usr/loc

Linux啟動tomcatRROR org.apache.catalina.core.StandardContext- Error starting static Resources java.lang.IllegalArgumentException: Document base /home

部署專案的時候,重啟tomcat,死活起不來,很鬱悶,網上巴拉了半天,結合自己的情況,找到了原因; 錯誤日誌資訊: 2018-12-13 13:52:26,992 [main] INFO org.apache.catalina.core.AprLifecycleListener- The APR

centos7啟動MySQLERROR 2002 (HY000)的解決辦法

      最近在安裝新的PHP開發環境,vagrant+virtualBox+centos7下安裝LNMP。遇到了無數多的坑,焦頭爛額。。。      記錄一下一些很奇怪的解決辦法吧。之前安裝了msql8.0.11,安裝參考部落格地址:安裝完成後,可以用初始密碼進入MySQ

Eclipse啟動tomcat:/bin/bootstrap.jar which is referenced by the classpath, does not exist.

1.錯誤: 在Eclipse下啟動tomcat的時候,報錯為:Eclipse下啟動tomcat報錯:The archive: C:/Program Files(x86)/Java/jdk1.

關於maven專案啟動tomcat

eclipse啟動tomcat報錯:  嚴重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.Class

suse啟動vsftp解決方法

suse下啟動vsftp報錯解決 在suse啟動vsftp服務 service vsftp start 報 Starting vsftpd startproc: exit status of pare

專案已經引用了相關的jar包,但是啟動還是,是因為伺服器沒把jar包考進lib目錄

筆者在搭建Spring開發環境的時候,發現丟擲如下異常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 很明顯是 ContextLoaderLis

在linux啟動eclipse

Eclipse: Cannot open display: Eclipse: Cannot open display: Eclipse: An error has occurred. See the log file/opt/modules/eclipse/config

window 啟動 tomcat

 ① Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded 超過GC開銷限制 ②  Caused by: java.lang.OutOfMemoryError: Java heap space

windowszookeeper,kafkasolr啟動

進到kafka的Home目錄 啟動zookeeper: .\bin\windows\zookeeper-server-start.bat config\zookeeper.properties 停止zookeeper: .\bin\windows\zookeeper-se

linux啟動tomcat "Name or service not known"錯誤解決

錯誤資訊 java.net.UnknownHostException: dev02.gzhl.interconnect: dev02.gzhl.interconnect: Name or service not known 將war包打入Tomcat,啟動的時候遇到錯誤,

Struts2配置redis共享session啟動,求大神指點.配置資訊如下:

加上標出配置,啟動則報錯,去除則正常啟動.         <!-- redis配置 -->     <!-- redis連線池 -->       <bean id="jedisPoolConfig" class="redis.client

IDEA 啟動tomcat

在IDEA裡配置時tomcat時,可能會遇到類似的問題,當tomcat配置好後,啟動tomcat,會報如下錯誤 Application Server was not connected before run configuration stop, reason: jav

IDEA啟動Tomcat

span log font .com cte ultimate cli led tomcat Maven編譯成功, 可是啟動Tomcat報錯: Application Server was not connected before run configuration

啟動Tomcat:JVM_Bind

啟動tomcat lips ava -a 目的 再次 由於 netstat 運行 今天運行項目遇到了一個很奇怪的問題, 由於之前的Eclipse沒有正常關閉(也就是直接殺死進程,而沒有關閉Tomcat)。 等再次運行tomcat項目的時候一直報錯說是JVM_Bind, 自己