我想通過測量每個讀/寫操作所需的時間來測量每個datanode的吞吐量。閱讀百萬個函數並找出發生的地方是非常令人困惑的。有人可以列出在讀/寫數據塊時進行的一系列調用嗎?我正在使用版本1.0.1。另外,如果已經有一個API在數據節點上測量這個數據,我可以使用這些信息。測量datanode的吞吐量
回答
要研究以測量吞吐量的重要類別爲FSDataOutputStream
(寫入)和FSDataInputStream
(讀取)。
文件閱讀:的第一件事情,一個節點不讀取文件時是FileSystem
對象上調用open()
。此時,您知道該節點將很快開始閱讀,並且您可以在此通話成功返回之後放置代碼以準備進行測量。在HDFS上調用open()
實例化DistributedFileSystem
與NameNode進行通信以收集塊位置(根據調用節點的鄰近程度排序)。最後,DistributedFileSystem
對象返回FSDataInputStream
(「看到」讀取文件),然後包裝DFSInputStream
(「看到」讀取塊,處理失敗)。您的測量範圍將在FSDataInputStream
的read()
和close()
調用範圍內。
文件寫入:節點將在FileSystem
上調用create()
。此時進行各種檢查,包括文件許可權,可用性等,但成功完成後將返回一個FSDataOutputStream
對象,其包裝DFSOutputStream
。當一個人看到連續寫入時,另一個人處理複製因素的一致性(即一次寫入=三次寫入)和失敗。與讀數類似,您的測量範圍將在FSDataInputStream
的write()
和close()
調用範圍內。
爲了給集羣中的所有節點做這個全球範圍內,你需要重寫這些方法作爲Hadoop的您在羣集共享分發的一部分。
不解釋如何爲每個數據節點聚合統計信息。不能期望客戶端節點分析單個數據節點並將信息發送到名稱節點。無論如何,因爲我的需要已經過去了,我會接受這個答案 – 2013-05-16 04:16:14
- 1. 吞吐量測量
- 2. 如何測量MQ的吞吐量
- 3. JMeter - 吞吐量
- 4. Java上傳吞吐量測量
- 5. TCP網絡吞吐量測量
- 6. JMeter的吞吐量控制器中的吞吐量影響
- 7. 如何計算INET的「吞吐量」示例中的吞吐量?
- 8. TCP吞吐量圖
- 9. 計算吞吐量
- 10. 吞吐量措施
- 11. CUDA,測試吞吐量的小程序
- 12. 寫油門當表吞吐量高,但GSI吞吐量低
- 13. 如何測試HDFS I/O吞吐量
- 14. Flink流 - 延遲和吞吐量檢測
- 15. 問:[Anylogic]測量生產吞吐率
- 16. Jmeter吞吐量的意義
- 17. Jmeter的吞吐量計算
- 18. 測量流量生成器的吞吐量
- 19. 低估DynamoDb吞吐量
- 20. 用java低吞吐量
- 21. TCP vs UDP吞吐量
- 22. Spark流+ kafka吞吐量
- 23. HAProxy遞減吞吐量
- 24. kafka max吞吐量(MB /秒)
- 25. 計算網絡吞吐量
- 26. 用RxJava限制吞吐量
- 27. DynamoDB吞吐量變化
- 28. C#UDPClient不良吞吐量
- 29. JMeter - 吞吐量控制器
- 30. 什麼是JMeter吞吐量
關於您的賞金評論:如果您將一個節點列入黑名單,它將不再參與羣集,因此吞吐量永遠不會恢復。 – likeitlikeit 2013-05-10 18:29:42
嘿Bug Catcher,我的答案在下面有什麼想法? – Engineiro 2013-05-15 03:01:32
@likeitlikeit我在現有的心跳策略方面做了一些事情:給它三次機會,如果它仍然不好,則將它列入黑名單。無論如何不打算用於實際使用 – 2013-05-16 04:18:47