㈠ 【Zookeeper系列】ZK命令基本使用
在了解 ZK 底層原理之前,咱們先簡單了解常用的 ZK 命令,熟悉常用 ZK 命令有利於排查相關問題或了解基於 ZK 自研系統等場景。比如在開發的時候,發現有些Dubbo服務無法被調用,這有可能是服務沒有注冊到ZK或者斷開連接;也有可能公司有自研的系統使用 ZK 作為配置中心,熟悉 ZK 命令就能知道是如何做到服務發現注冊和配置動態更新。
話不多說,咱們先來了解常見的 ZK 命令吧!
實際上,ZK並沒有help命令,你可以隨意敲一兩個字元也會這樣顯示,只不過基於使用linux的習慣,姑且認為輸入help能列印出ZK支持的命令吧。
ls 命令可以查看指定目錄下的節點,使用可選的參數,能夠更加詳細的看到節點的相關信息
stat / 等價於 ls -s /
和 ls 命令相似的,加上-w參數添加監聽
在ZK 3.5版本之後,新增了容器和TTL節點,分別是使用 -c 和 -t 創建。所以讀者們要注意你當前使用的版本,如果版本低於3.5的,是沒有容器和TTL節點。
特別說明一下容器節點和TTL節點的使用:
另外關於 TTL節點 的使用,需要特別注意的是,如果使用默認的配置文件啟動zk,想創建有存活時間的節點,比如執行 create -t 10 /test 是會報 KeeperErrorCode = Unimplemented for XXX 這樣的錯誤。解決辦法是需要在ZK啟動前,先在配置文件加上 extendedTypesEnabled=true 然後重啟ZK(集群部署的話,所有ZK都需要修改配置文件再重啟)
配置後重啟,執行 create -t 10 /test 這樣的命令就不會報錯啦
例子:get -s /demo
例子:先查詢節點版本號,模擬並發下修改同一節點
get -s /demo 可知當前 dataVersion = 1
客戶端1:set -v 1 /demo demo-data1
客戶端2:set -v 1 /demo demo-data2
客戶端1比客戶端2先執行,客戶端2再執行的話,這時顯示報錯
-v version:和 set 命令相似,-v 參數用於判斷當前操作的版本
例子:先創建一個delNode節點,然後刪除
在前面使用create命令的時候,有一個acl參數是設置節點許可權的,那麼我們應該怎麼設置?
舉個例子: create /testAcl demo world:anyone:crwda
這行命令的意思是,創建 testAcl 這個節點,節點值為demo,其許可權策略是所有人都可以執行 crwda 操作。那麼接下來,咱們先看下 ACL 是什麼東東?
ACL 全稱是 Access Control List ,也就是訪問控制列表,ACL可以設置節點的操作許可權。那麼控制許可權的粒度是怎樣呢?
對於節點 ACL 許可權控制,是通過使用: scheme:id:perm 來標識(也就是例子中的格式 -> world:anyone:crwda),其含義是:
Scheme 有哪些授權策略?
ID 授權對象有哪些?
Permission 許可權有哪些?
根據上面的參數可知,我們可以通過給所有人、特定的賬號密碼、特定的 ip 設置節點許可權,這樣能夠更加方面地管理節點的訪問。
值得注意的是,節點可以設置多種授權策略,但對於上下節點而言,許可權的設置只對當前節點有效。換言之,許可權不存在繼承關系,即使節點被設置許可權,但不會影響上下節點原來的許可權!
上面執行了 create /testAcl demo world:anyone:crwda 命令給節點設置許可權,那怎麼看節點的許可權咧?
很簡單,執行 getAcl 節點路徑 就可以查看對應節點的許可權,比如 getAcl /testAcl,執行結果如下
除了在執行create命令創建節點的時候設置許可權,還可以通過 setAcl 指定節點設置許可權,比如我想指定/testAcl這個節點只可以通過特定 IP操作,並且限制執行許可權為crdw,那麼可以執行 setAcl /testAcl ip:127.0.0.1:crwd ,再次執行 getAcl /testAcl 結果如下:
ZK 的命令還有部分沒有演示,這並不阻礙咱們學習ZK的原理,先掌握常見的命令,如果日後有其他場景的話,再根據特定的命令學習就可以啦。
無意中發現有 Zookeeper的客戶端,感興趣的讀者可以玩一下~ 友情提醒,可能在節點數量很多的時候,打開很慢,甚至卡死,所以這個可視化工具可以在自己本地玩玩,不建議應用在生產上哈。這也側面的說明,學會 ZK 命令的重要性(認真臉.jpg)
解壓縮後,進入ZooInspector的build目錄,執行 java -jar zookeeper-dev-ZooInspector.jar 就可以啟動工具。
連接上 ZK 後,就可以看到節點的信息和節點的ACL,具體玩法,可以再自己摸索哈~
好了,以上是 ZK 常見命令的基本使用和可視化工具的基本使用。
參考資料:
《從Paxos到Zookeeper分布式一致性原理與實踐》
如果覺得文章不錯的話,麻煩點個贊哈,你的鼓勵就是我的動力!對於文章有哪裡不清楚或者有誤的地方,歡迎在評論區留言~
㈡ linux啟動app命令
linux啟動app命令:做 Linux 嵌入式開發,經常會遇到要設置自己的應用程序在系統開機的時候自動啟動,並且一般情況我們不想安裝一些額外的軟體去實現此種需求。那麼直接根據當前系統自帶的默認的一些工具實現用戶軟體的開機自啟動。
本次測驗的系統環境為 Ubuntu 16.04 LTS,測試內容均得到正確的驗證,如果其他環境出現不一致的現象,請查閱相關的差異。
比如先要實現下面的應用程序的開機自啟動(實現的代碼最下面給出,有需要的可以查看):
1. 應用程序的名稱:app.bin
2. 應用程序的保存路徑:/home/ubuntu/app/ 下
3. 應用程序的工作路徑:/home/ubuntu/app/ 下
㈢ hadoop全家桶系列1-zookeeper
啟動ZK服務: sh bin/zkServer.sh start
查看ZK服務狀態: sh bin/zkServer.sh status
停止ZK服務: sh bin/zkServer.sh stop
重啟ZK服務: sh bin/zkServer.sh restart
顯示根目錄下、文件: ls / 使用 ls 命令來查看當前 ZooKeeper 中所包含的內容
顯示根目錄下、文件: ls2 / 查看當前節點數據並能看到更新次數等數據
創建文件,並設置初始內容: create /zk "test" 創建一個新的 znode節點「 zk 」以及與它關聯的字元串
獲取文件內容: get /zk 確認 znode 是否包含我們所創建的字元串
修改文件內容: set /zk "zkbak" 對 zk 所關聯的字元串進行設置
刪除文件: delete /zk 將剛才創建的 znode 刪除
退出客戶端: quit
幫助命令: help
執行hdfs zkfc -formatZK 初始化HA的zookeeper信息
hadoop namenode -format
在nn1上執行hadoop-daemon.sh start namenode
在nn2上執行hadoop namenode -bootstrapStandby 同步
在nn2上執行 hadoop-daemon.sh start namenode
在nn1和nn2分別啟動hadoop-daemon.sh start zkfc,這時兩個一個變成active,一個變成standby
hdfs haadmin -getServiceState 可查看HA狀態
注意HA不能切換是因為nn1和nn2的沒有安裝fuser
在nn1和nn2上執行yum -y install psmisc
改變文件副本數 setrep
hadoop fs -setrep -R -w 2 /test.txt
-R 遞歸改變目錄下所有文件的副本數。
-w 等待副本數調整完畢後返回。可理解為加了這個參數就是阻塞式的了。
hadoop dfsadmin
例如:hadoop dfsadmin -report
dfsadmin命令詳解
-report:查看文件系統的基本信息和統計信息。
-safemode <enter | leave | get | wait>:安全模式命令。安全模式是NameNode的一種狀態,在這種狀態下,NameNode不接受對名字空間的更改(只讀);不復制或刪除塊。NameNode在啟動時自動進入安全模式,當配置塊的最小百分數滿足最小副本數的條件時,會自動離開安全模式。enter是進入,leave是離開。
㈣ 如何啟動zookeeper-3.3.6
如何啟動zookeeper-3.3.6?
啟動zookeeper-3.3.6的方法:下載安裝配置zookeeper的伺服器環境-創建文件-設置許可權-編輯-重啟即可。
具體步驟:
一、登陸linux伺服器用cd 命令切換到/etc/rc.d/init.d/目錄下。
十、重啟即可。
㈤ Zookeeper常用命令
ZooKeeper服務命令:
在准備好相應的配置之後,可以直接通過zkServer.sh 這個腳本進行服務的相關操作
1. 啟動ZK服務: sh bin/zkServer.sh start
2. 查看ZK服務狀態: sh bin/zkServer.sh status
3. 停止ZK服務: sh bin/zkServer.sh stop
4. 重啟ZK服務: sh bin/zkServer.sh restart
zk客戶端命令
ZooKeeper命令行工具類似於Linux的shell環境,不過功能肯定不及shell啦,但是使用它我們可以簡單的對ZooKeeper進行訪問,數據創建,數據修改等操作. 使用 zkCli.sh -server 127.0.0.1:2181 連接到 ZooKeeper 服務,連接成功後,系統會輸出 ZooKeeper 的相關環境以及配置信息。
命令行工具的一些簡單操作如下:
1. 顯示根目錄下、文件: ls / 使用 ls 命令來查看當前 ZooKeeper 中所包含的內容
2. 顯示根目錄下、文件: ls2 / 查看當前節點數據並能看到更新次數等數據
3. 創建文件,並設置初始內容: create /zk "test" 創建一個新的 znode節點「 zk 」以及與它關聯的字元串
4. 獲取文件內容: get /zk 確認 znode 是否包含我們所創建的字元串
5. 修改文件內容: set /zk "zkbak" 對 zk 所關聯的字元串進行設置
6. 刪除文件: delete /zk 將剛才創建的 znode 刪除
7. 退出客戶端: quit
8. 幫助命令: help
9rmr命令
刪除節點命令,此命令與delete命令不同的是delete不可刪除有子節點的節點,但是rmr命令可以刪除,注意路徑為絕對路徑。
如rmr /zookeeper/znode
10 delquota命令
刪除配額,-n為子節點個數,-b為節點數據長度。
如delquota –n 2,請參見listquota和setquota命令。
11printwatches命令
設置和顯示監視狀態,on或者off。
如printwatches on
listquota命令
顯示配額。
如listquota /zookeeper
absolute path is/zookeeper/quota/zookeeper/zookeeper_limits
Output quota for /zookeepercount=2,bytes=-1
解釋:
/zookeeper節點個數限額為2,長度無限額。
setAcl命令
設置節點Acl。
此處重點說一下acl,acl由大部分組成:1為scheme,2為user,3為permission,一般情況下表示為scheme:id:permissions。
其中scheme和id是相關的,下面將scheme和id一起說明。
scheme和id
world : 它下面只有一個id, 叫anyone, world:anyone代表任何人,zookeeper中對所有人有許可權的結點就是屬於world:anyone的
auth : 它不需要id, 只要是通過authentication的user都有許可權(zookeeper支持通過kerberos來進行authencation, 也支持username/password形式的authentication)
digest : 它對應的id為username:BASE64(SHA1(password)),它需要先通過username:password形式的authentication
ip : 它對應的id為客戶機的IP地址,設置的時候可以設置一個ip段,比如ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super : 在這種scheme情況下,對應的id擁有超級許可權,可以做任何事情(cdrwa)
permissions
CREATE (c): 創建許可權,可以在在當前node下創建child node
DELETE (d): 刪除許可權,可以刪除當前的node
READ (r): 讀許可權,可以獲取當前node的數據,可以list當前node所有的child nodes
WRITE (w): 寫許可權,可以向當前node寫數據
ADMIN (a): 管理許可權,可以設置當前node的permission
綜上,一個簡單使用setAcl命令,則可以為:
setAcl /zookeeper/node1 world:anyone:cdrw
getAcl命令
獲取節點Acl。
如getAcl /zookeeper/node1
'world,'anyone
: cdrwa
註:可參見setAcl命令。
sync命令
強制同步。
如sync /zookeeper
由於請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
redo命令
再次執行某命令。
如redo 10
其中10為命令ID,需與history配合使用。
addauth命令
節點認證。
如addauth digest username:password,可參見setAcl命令 digest處。
使用方法:
一、通過setAcl設置用戶名和密碼
setAcl pathdigest:username:base64(sha1(password)):crwda
二、認證
addauth digest username:password
delete命令
刪除節點。
如delete /zknode1
setquota命令
設置子節點個數和數據長度配額。
如setquota –n 4 /zookeeper/node 設置/zookeeper/node子節點個數最大為4
setquota –b 100 /zookeeper/node 設置/zookeeper/node節點長度最大為100
ZooKeeper 常用四字命令:
ZooKeeper 支持某些特定的四字命令字母與其的交互。它們大多是查詢命令,用來獲取 ZooKeeper 服務的當前狀態及相關信息。用戶在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應的命令
1. 可以通過命令:echo stat|nc 127.0.0.1 2181 來查看哪個節點被選擇作為follower或者leader
2. 使用echo ruok|nc 127.0.0.1 2181 測試是否啟動了該Server,若回復imok表示已經啟動。
3. echo mp| nc 127.0.0.1 2181 ,列出未經處理的會話和臨時節點。
4. echo kill | nc 127.0.0.1 2181 ,關掉server
5. echo conf | nc 127.0.0.1 2181 ,輸出相關服務配置的詳細信息。
6. echo cons | nc 127.0.0.1 2181 ,列出所有連接到伺服器的客戶端的完全的連接 / 會話的詳細信息。
7. echo envi |nc 127.0.0.1 2181 ,輸出關於服務環境的詳細信息(區別於 conf 命令)。
8. echo reqs | nc 127.0.0.1 2181 ,列出未經處理的請求。
9. echo wchs | nc 127.0.0.1 2181 ,列出伺服器 watch 的詳細信息。
10. echo wchc | nc 127.0.0.1 2181 ,通過 session 列出伺服器 watch 的詳細信息,它的輸出是一個與 watch 相關的會話的列表。
11. echo wchp | nc 127.0.0.1 2181 ,通過路徑列出伺服器 watch 的詳細信息。它輸出一個與 session 相關的路徑。
㈥ 如何命令啟動zeekeeper
先找到你的zkServer.sh
find / -name zkServer.sh
然後輸入./zkServer.sh start 就啟動了。
輸入jps命令查看進程,其中,QuorumPeerMain是zookeeper進程,表示啟動成功;
如果沒有JDK是啟動不了的。所以你要安裝配置下
下載
apt-get install openjdk-8-jdk-headless
配置java環境
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
命令 source /etc/profile
命令java -version
環境設置成功。