java集群
❶ 編寫一個java類方法,通過該方法可以獲取出存儲在HDFS集群中根目錄的所有文件
public void listMyFile() throws Exception {
//獲取FileSystem
//"hdfs"為偽造用戶,使用hdfs用戶進行訪問
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.83.141:8020"), new Configuration(), "hdfs");
//獲取指定目標目錄下的所有文件信息
RemoteIterator<LocatedFileStatus> iterator =
fileSystem.listFiles(new Path("/"), true);
//遍歷迭代器
while (iterator.hasNext()) {
//獲取每個文件詳細信息
LocatedFileStatus fileStatus = iterator.next();
//獲取每個文件的存儲路徑
System.out.println("路徑:" + fileStatus.getPath() +
"---" + fileStatus.getPath().getName());
//獲取文件的block存儲信息
BlockLocation[] blockLocations = fileStatus.getBlockLocations();
//列印每個文件的block數
System.out.println("block數量:" + blockLocations.length);
//列印每一個block副本的存儲位置
for (BlockLocation blockLocation : blockLocations) {
String[] hosts = blockLocation.getHosts();
for (String host : hosts) {
System.out.println("主機:" + host);
}
}
}
}
❷ java搭建分布式集群項目大概需要多少台伺服器
超過一台都可以叫集群,只有一台也可以算分布式,需要多少台伺服器,主要看你的項目有多少模塊,需要多高的性能。沒有什麼硬性要求,不用糾結
❸ java 集群
群集方法介乎兩種計算機系統結構之間。當把多台計算機配置或互連在一起時,可採取鬆散耦合或緊密耦合結構。網路就是一個鬆散耦合的系統,我們也稱其為異類系統結構。網路把由各種CPU、應用軟體、NIC(網路介面控制器)、甚至是操作系統組成的多台計算機連接在一起。計算機之間的地理距離可以近在咫尺,也可以遠在天邊。可以用實時和/或非同步方式耦合網路。
網際網路就是一個典型的極為鬆散與異類配置的例子。網際網路本身不能「實時」控制與它連接的任何主機。在鬆散耦合網路中,單機崩潰一般不會影響網路的其它部分。
相反,緊密耦合系統則高度依賴於構成系統的所有部件。當系統由相同部件組成,採用並行操作方式並共享所有子系統(存儲器)時,我們稱其為同類系統結構。緊密耦合系統最常見的例子是SMP(對稱多處理)。在SMP狀態下,根據工作量的多少把任務分給幾台處理器,這樣可均勻地分配工作量,以便提高數據吞吐量。
我們舉了兩個典型的鬆散和緊密耦合系統的例子,群集就介於鬆散和緊密耦合系統之間。根據系統的配置,在某些方面(比如操作系統),群集控制的系統也許更偏向緊密耦合的系統,或者偏向鬆散耦合的系統(比如獨立計算能力,通過公共存儲器連接)。
通常群集器放在同一設備區或同一辦公樓里。從理論上說,群集控制方法可應用於閉路廣域網環境中(現正在美國東北部地區進行試驗)。可是在考慮到視頻伺服器應用時,一般來說只能把設備放在主要設施運行所在地。
公共數據共享
群集允許共享幾個節點的數據。在此應用中,這些節點包括客戶工作站、中央或多伺服器。我們知道可以通過許多路徑(比如星形結構)連接節點,客戶可通過不同連接的節點路徑存取數據。當節點就是伺服器時便可共享公共存儲器,某個伺服器節點故障不會導致整個群集器系統癱瘓。
在12月專欄里,我們把群集描述成一個提供高可得性的系統。對廣播或有線電視操作來說,視頻伺服器必須要提供連續的或高可得性的數據。考慮到這一點,我們認為視頻伺服器體系結構採用群集是大有潛力的。
待命或無源伺服器結構就是一種群集形式。在這種結構下,一個或多個伺服器(或節點)平時保持在待命狀態,隨時可以啟動。利用後台控制系統管理待命伺服器內容數據。在未發生故障之前一般不啟用無源伺服器。
無源伺服器未必就是主伺服器的完全鏡像,它也可以有一些有限的數據源,包括存儲器,要經常清除這些數據,然後重新裝入最新的節目或廣告。通過這一循環過程把適量的數據(或視頻媒介)保持在待命狀態,在需要時隨時可以上線使用。
伺服器在待命狀態時通常由少量的部件組成,比如編解碼器,在出現故障或另一個伺服器需要它支持的時候,該伺服器可立即被集成到系統中應用。此時,伺服器進入負載均衡狀態。
數據共享
數據共享是群集器需要提供的最基本功能之一。我們還是以視頻伺服器的應用為例,多個編輯站在這里獨立地工作,不過利用一組公共伺服器來管理數據和應用層的處理。
在這個例子中,多個新聞編輯站(或客戶工作站)可以選擇用哪個編輯伺服器(包括編輯用的軟體和硬體)來進行編輯。這些伺服器控制對公共媒體資料庫的存取,編輯站只是這些伺服器的簡單控制器GUI(圖形用戶界面)。編輯伺服器進一步控制接入另一個更大的數據存儲庫(通常是新聞檔案)。
這個概念可通過群集軟體實現。在獨立的編輯站通過群集器存取數據的過程中,編輯與數據存取或存儲處理自動進行,不會影響其它的客戶編輯站或預放站。通過提供連續的數據可得性,每個伺服器可以是有源的,也可以是無源的,視工作負荷而定。假如有一個伺服器發生了故障,該結構也可提供冗餘或保護方式。
共享一個操作系統和平台是群集的又一個共同特點。讓硬體與軟體平台同屬一類,也就是說,基本上是相同的,就可採用公用互連方案與公共文件格式結構。在SMP這樣的系統中,所有部件都依賴於公用硬體而像單獨部件一樣運行。正如我們已提到的,群集可以讓一部分系統保持同類結構,但脫離所有系統都有的依賴性,其它性能就會下降。
其它優點
我們現在還是回到基於群集伺服器的編輯環境中來,我們又發現了其它一些優點。伺服器硬體具有的冗餘性可對數據起保護作用。在新聞編輯環境中,當即將播放時,一個或更多的伺服器便可將客戶工作站的功能變成播出功能,直接把新聞播出去。這樣還能讓所有客戶和伺服器接入別的伺服器的數據,包括在最後一分鍾直接存取中央存儲庫的數據。
通過使用多個伺服器(每個伺服器收集、編輯、存檔和重放的資源是一個類型的),系統便可對硬體進行備份。在某個伺服器出現故障時,可把資源轉給或分給其它用戶,系統的其餘部分仍繼續工作。
除了上述的數據共享外,其它群集器結構也是可行的。在有些情況下,某些資源可被一個特定的節點「擁有」,在未接到指令前不會放棄。可將該系統的結構配置成一個節點有多個輸入編碼器,但只有一個輸出解碼器。另一個節點可能沒有輸入,但有好幾個輸出供放像和預看用。如果某一個節點出現故障,可讓與它相對應的節點頂替它,直到它被修復為止。
非共享結構
從硬體上說,每個節點的能力(或資源)基本上相同,但內部系統配置是用各種形式鎖定的,除非另有要求。按照群集語言可把此結構
叫做非共享結構。在此結構里,某些資源在未被傳送給其它節點或者該節點未出故障之前歸一個節點所有。在採用非共享結構的計算機與模式里運用群集法通常會把硬碟等設備分配給一個節點,並阻止其他人使用它,除非將其開放或該節點發生故障。
群集結構的其它實施方面增加了系統的復雜程度。除了非共享結構外(只提供最簡單的性能和可得性),還有磁碟共享結構。磁碟共享可提高存儲接入不同主機系統的能力。
從硬體的角度看,系統的磁碟陣列控制器可以很容易地管理這個共享結構。比較難辦的是在最低級別(文件或記錄層)上協調更新數據。
協調工作必須成為群集軟體的一部分。可以設想一下,如果兩個用戶同時接入同一記錄層會發生什麼情況。假定每個用戶都修改了文件。用戶1先把數據寫入伺服器,他發現用戶2做了完全不同的修改並且把修改後的文件用同一文件名存入相同的磁碟,或許存在另一個伺服器上,這樣就有可能把第一個用戶修改的文件沖掉。沒有一個控制方案,就會亂成一團。
盡管每個文件或記錄層都有簡單的口令或鎖定保護,但要確保用文件的正確版本存成另一個文件名或是「正式」版,則要求具有更高層的數據控制與管理能力。磁碟快速緩存問題又是另一種情形,我們等一會兒再說。
另一個防止錯誤數據覆蓋正確數據的方法是在修改未最後定之前限制接入某一特定文件。在計算機數據域中,用一個稱為信息傳送的程序通知管理員(通常是應用後台軟體的一部分)文件存取被鎖定,直到修改程序結束為止。
原子操作
原子操作的三個步驟是:讀數據、修改數據、然後重新寫入新數據。在原子操作過程中,在未執行完操作之前不會受到任何干擾。還必須有其他保護措施,以防隱藏的備份文件在以後某個無法預測的時間改寫其它的文件。
當數據分布在不止一個存儲磁碟上時,或者當公共存儲陣列中的數據被不同用戶在不同時間存取時,如何防止數據不一致是群集軟體需要解決的又一個問題。無論是通過硅緩存器還是通過遠程接入的臨時磁碟緩存器(甚至分區)進行高速緩存都會遇到定時和同步的問題。我們把這個問題叫做緩存相關性,它是因磁碟驅動器定時問題引起的。
磁碟驅動器並不一定能馬上寫入數據,磁頭也許定位在錯誤的磁軌上,導輪也許偏離相位190度,等結束運轉後才能開始磁頭的寫入操作,或許還因為溫度問題造成暫時性延緩,直到一切都符合條件為止。
這通常被稱為等待時間,磁碟驅動器的機械部分要求在驅動器等待寫入時暫存一下數據。最常見的方法是在驅動器上安一個硅緩存器,這個過程被叫做寫回高速緩存。在把主機儲存器中的數據轉存到磁碟驅動器的過程中,設一個寫回緩存器標識,對數據源表示寫入程序成功了。實際上,得過一會兒才能開始真正的電磁機械式的數據儲存過程。
假如系統上的另一個節點也從這個驅動器讀數據,(這是經過許可的操作,因為數據發生器已接到通知,新數據已發送到了這個位置),那麼緩存器已在指定位置存儲了正確新數據的指示信號就不見了。我們用失效數據一詞來表示未更新數據進入新數據區的狀態。
無效數據
RAID控制器在各自磁碟陣列的寫回緩存器里為與這個特殊的陣列有關的磁碟管理失效數據。假如在軟體里設一些適當的開關來檢測和阻止它發生,那麼數據相關性就只是一個小問題了。
當系統是由多層陣列構成的時候,控制失效數據問題的任務就交給高級別軟體去完成,把信號傳送給各自的陣列,就不會發生孤立或失效數據問題了。
在這個簡化的單一視頻伺服器模型里,媒體是通過單編碼器輸入的,並存在一個單實體陣列上。由一個更高級別(通常是第三方API,應用程序介面)登記和管理活動圖像數據。通常將其作為任選的「媒體管理」或「資產管理器」包出售。通過這個軟體,控制活動圖像和數據的過程成為一個閉路過程,因為輸入與輸出指令必須通過這個管理軟體包。該軟體在自己的資料庫里始終跟蹤著數據的有效性。
如果有好幾個伺服器,每個伺服器有自己的任務,情況就變得比較復雜了。這時可以讓幾個信號源的輸入進入不同的編碼器,並存在一個較大的磁碟陣列里。這些陣列通常與光纖通道仲裁環相連,由於它的連接方式決定,它可迫使部分重寫動作由伺服器推遲到存儲器,直到有了充足的帶寬來把該數據從這個存儲器存入另一個存儲器。
在類似的應用中,媒體管理軟體就更完善,更必不可少了。有時候製造商會提供一個完全獨立的CPU和資源管理軟體包(作為選件)。這個軟體包就像看門狗那樣管理伺服器之間的數據共享操作。除了這些基本概念外,還有大量的定時和數據驗證問題,這些問題會經常在伺服器結構的軟體與子系統中碰到。
群集的過程和功能正在擴展到設備內和設備間應用中。群集器理念最終將允許整個廣播集團通過光纖或通過廣域網共享資源。雖然可以讓設施連成網共享媒介,可是在這些設施相互離得很遠的情況下實現節點資源共享的設想似乎還很遙遠。
❹ java操作redis集群問題CLUSTERDOWN The cluster is down. Use CLUSTER INFO for more information
java操作redis集群問題CLUSTERDOWN The cluster is down. Use CLUSTER INFO for more information,配置沒有配置好的問題。