當前位置:首頁 » 編程語言 » javanfs

javanfs

發布時間: 2022-09-10 19:11:31

① 如何提高webserver並發能力

1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的 html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現, 這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像 我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁 面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。

除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。

同 時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論 壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分 內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。

2、圖片伺服器分離
大家知道,對於Web伺服器來說,不 管 是 Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片服 務器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器 上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗 和執行效率。

3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。

在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。

上 面提到的資料庫集群由於在架構、成本、擴張性方面都會受到所採用DB類型的限制,於是我們需要從應用程序的角度來考慮改善系統架構,庫表散列是常用並且最 有效的解決方案。我們在應用程序中安裝業務和應用或者功能模塊將資料庫進行分離,不同的模塊對應不同的資料庫或者表,再按照一定的策略對某個頁面或者功能 進行更小的資料庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能並且有很好的擴展性。sohu的論壇就是採用了這樣的架 構,將論壇的用戶、設置、帖子等信息進行資料庫分離,然後對帖子、用戶按照板塊和ID進行散列資料庫和表,最終可以在配置文件中進行簡單的配置便能讓系統 隨時增加一台低成本的資料庫進來補充系統性能。

4、緩存
緩存一詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開發中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在後面講述。
架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網 站程序開發方面的緩存,Linux上提供的Memory Cache是常用的緩存介面,可以在web開發中使用,比如用java開發的時候就可以調用MemoryCache對一些數據進行緩存和通訊共享,一些大 型社區使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多 了,.net不是很熟悉,相信也肯定有。

5、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同 網 絡接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實 時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等 工具。

6、負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求採用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇,我個人接觸過一些解決方法,其中有兩個架構可以給大家做參考。
硬體四層交換
第 四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。第四層交換功能就象是虛 IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、ftp、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要復雜的 載量平衡演算法。在IP世界,業務類型由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決 定。
在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中國當初接近2000台伺服器使用了三四台Alteon就搞定了。

軟體四層交換
大家知道了硬體四層交換機的原理後,基於OSI模型來實現的軟體四層交換也就應運而生,這樣的解決方案實現的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有餘的,有人說軟體實現方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟 件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿 足多種應用需求,這對於分布式的系統來說必不可少。

一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。

② 要架構一個網站,要求並發性好,安全性高,資料庫oracle不能更改,有兩種架構,請大家幫我分析哪種架構好

我在Cernet做過撥號接入平台的搭建,而後在Yahoo3721負載搜索引擎前端平台開發,又在貓撲處理過大型社區貓撲大雜燴的架構升級等工作,同時自己接觸和開發過不少大中型網站的模塊,因此在大型網站應對高負載和並發的解決方案上有一些積累和經驗,可以和大家一起探討一下。

一個小型的網站,比如個人網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、性能的要求都很簡單,隨著互聯網業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站來說,所採用的技術更是涉及面非常廣,從硬體到軟體、編程語言、資料庫、WebServer、防火牆等各個領域都有了很高的要求,已經不是原來簡單的html靜態網站所能比擬的。

大型網站,比如門戶網站。在面對大量用戶訪問、高並發請求方面,基本的解決方案集中在這樣幾個環節:使用高性能的伺服器、高性能的資料庫、高效率的編程語言、還有高性能的Web容器。但是除了這幾個方面,還沒法根本解決大型網站面臨的高負載和高並發問題。

上面提供的幾個解決思路在一定程度上也意味著更大的投入,並且這樣的解決思路具備瓶頸,沒有很好的擴展性,下面我從低成本、高性能和高擴張性的角度來說說我的一些經驗。

1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。

除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。

同時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。

2、圖片伺服器分離
大家知道,對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗和執行效率。

3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。

在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。

上面提到的資料庫集群由於在架構、成本、擴張性方面都會受到所採用DB類型的限制,於是我們需要從應用程序的角度來考慮改善系統架構,庫表散列是常用並且最有效的解決方案。我們在應用程序中安裝業務和應用或者功能模塊將資料庫進行分離,不同的模塊對應不同的資料庫或者表,再按照一定的策略對某個頁面或者功能進行更小的資料庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能並且有很好的擴展性。sohu的論壇就是採用了這樣的架構,將論壇的用戶、設置、帖子等信息進行資料庫分離,然後對帖子、用戶按照板塊和ID進行散列資料庫和表,最終可以在配置文件中進行簡單的配置便能讓系統隨時增加一台低成本的資料庫進來補充系統性能。

4、緩存
緩存一詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開發中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在後面講述。
架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網站程序開發方面的緩存,Linux上提供的Memory Cache是常用的緩存介面,可以在web開發中使用,比如用Java開發的時候就可以調用MemoryCache對一些數據進行緩存和通訊共享,一些大型社區使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。

5、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網路接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等工具。

6、負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求採用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇,我個人接觸過一些解決方法,其中有兩個架構可以給大家做參考。
硬體四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。第四層交換功能就象是虛 IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要復雜的載量平衡演算法。在IP世界,業務類型由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決定。
在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中國當初接近2000台伺服器使用了三四台Alteon就搞定了。

軟體四層交換
大家知道了硬體四層交換機的原理後,基於OSI模型來實現的軟體四層交換也就應運而生,這樣的解決方案實現的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有餘的,有人說軟體實現方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟體四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應用需求,這對於分布式的系統來說必不可少。

一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。這樣的架構我准備空了專門詳細整理一下和大家探討。

對於大型網站來說,前面提到的每個方法可能都會被同時使用到,我這里介紹得比較淺顯,具體實現過程中很多細節還需要大家慢慢熟悉和體會,有時一個很小的squid參數或者apache參數設置,對於系統性能的影響就會很大,希望大家一起討論,達到拋磚引玉之效。

③ java 怎麼獲得驅動器類型

listRoots
public static File[] listRoots() 列出可用的文件系統根。
特定 Java 平台可以支持零個或更多個分層組織的文件系統。每個文件系統有一個 root 目錄,可以從這里到達文件系統中的所有其他文件。例如,Windows 平台為每個活動驅動器提供了一個根目錄;UNIX 平台只有一個根目錄,即 "/"。可用文件系統根的設置受各種系統級操作的影響,比如可移動介質的插入和彈出,以及斷開或卸載那些物理磁碟或虛擬磁碟。

此方法返回一個 File 對象數組,這些對象表示可用文件系統根的根目錄。可以保證本地機器上物理存在的任何文件的規范路徑名都以此方法返回的根之一開始。

位於其他一些機器上的文件的規范路徑名是通過遠程文件系統協議(比如 SMB 或 NFS)訪問的,它們可能以此方法返回的根之一開始,也可能不是這樣。如果遠程文件的路徑名在語法上無法與本地文件的路徑名進行區分,那麼它將以此方法返回的根之一開始。例如,此方法將返回表示 Windows 平台上映射為網路驅動器根目錄的 File 對象,而不返回包含 UNC 路徑名的 File 對象。

與此類中的大多數方法不同,此方法不拋出安全性異常。如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對特定根目錄進行讀訪問,那麼該目錄將不會出現在結果中。

返回:表示可用文件系統根的 File 對象數組;如果無法確定根集,則返回 null。如果沒有文件系統,那麼該數組將為空。從以下版本開始:1.2

④ 一個五年架構師為什麼基本年薪酬可以達到50萬

架構師,我想很多人都知道,其實該職位頭銜在最早的IT領域是沒有的,它是近些年來由互聯網的發展所引發的需求,因為現階段的數據量及高並發的活躍好動,引起了不少傳統的技術人員的力不從心,企業愈發關注到了系統架構的重要性,所以不同行業開始招募架構技術人員,架構師就誕生了。

架構設計的條件

以下三個條件不適合做架構設計

對架構不感興趣,但又迫於需求;

入IT行業,年限小於4年的;

主觀能動性弱,又安於現狀的;

架構設計的優勢

更好的梳理業務的結構體系;

更好的拓展、維護及性能優化;

更好的適應企業業務靈活的推進;

更好的適應大數據的沖洗和應對;

更好的穩定性、低成本及快速迭代;

架構設計時候需要注意的地方

架構設計需要注意的地方,不是怎麼把架構搭建起來,而是必須根據業務需求,嚴格分析,實現該需求需要什麼技術會更好及更長遠發展的考慮;

另外,構建好的架構雖然可以運行,但是性能需要跟起來,否則架構設計會適得其反,增加不必要的工作量,那麼下面就詳細介紹下架構設計的策略。

平台的需求

客戶需求

在線購物、在線支付或貨到付款;

購買商品後,客戶可以與客服溝通;

購買商品過程,物流的管理及跟蹤;

收取到商品後,商品、物流評價打分;

客戶的需求為最高,也代表了企業的核心需求,當然,企業需求還包括其它很多非功能性需求,具體請查看需求梳理部分。

平台的業務架構

根據業務的需求進行子系統模塊劃分,可以劃分為商品子系統、購物子系統、支付子系統、物流子系統、客服子系統、評論子系統;而非核心需求可拆分出客服子系統、評論子系統及介面子系統。另外,根據各個子系統的核心等級,可拆分出核心子系統和非核心子系統,前者包括商品子系統、購物子系統、支付子系統及物流子系統;後者,則包括評論子系統、客服子系統及介面子系統。需要注意的是一般大型電商平台的物流系統是單獨分離出來的系統(入庫、出庫、庫存管理、配送管理及貨品管理),而這里劃分為子系統的主要目的是為演示核心架構,本架構中物流子系統一般作為對接和管理獨立子系統的對接模塊哦。

1、業務拆分目的

為了解決各個模塊子系統間的耦合、維護及拓展性;

方便單獨部署子系統,避免集中部署導致一個出問題,全部不能用;

分配專門的團隊,負責具體的子系統,最大化工作效率安排;

應對大數據,高壓力時,保護核心子系統正常使用;

2、業務的架構圖

在上面的業務架構圖中,將核心和非核心業務進行拆分,同時每個系統都要獨立部署實現,做到大數據量壓下,各個系統獨立運作,提高可用性,必要時可以暫停掉非核心系統的資源開銷,保證核心業務正常為用戶服務。

平台的技術架構

在上面業務架構圖基礎上,我們需要一個技術架構的演變過程,一切只為滿足用戶的體驗和支撐為前提,所以技術架構的搭建不是一蹴而就的,而是隨著業務的不斷衍變,系統的架構會逐漸完善更新,以實現應對業務數據量的沖擊。

1、基本的架構設計

記得很早的時候,很多中小企業所採用的架構設計十分簡單,基本使用一台伺服器來滿足一切需求部署,比如:一台伺服器同時用作應用部署、資料庫存儲以及圖片存儲等,不料的是待用戶數據達到50萬以上,系統出現很多性能問題,盡管對資料庫和程序做個各種性能優化,結果仍無明顯改善,架構如下:

後來,IT程序猿發現圖片的讀寫嚴重影響了系統性能,並將圖片單獨存放在獨立伺服器中,並且在架構中引入了Cache中間件,比如:Memcache,這種做法是可取的,而且比原來性能提高了1-2個性能級別,架構設計如下:

2、初級的架構設計

前幾年,一般的電商網站的做法是選用三台伺服器,一台部署應用,一台部署資料庫,一台部署NFS文件系統,做到將各個規模龐大並耗用性能的部分剝離到不同伺服器設備,再配備必要的緩存中間件,基本可以滿足近1000萬的數據量,具體的架構圖如下:

但是,目前主流使用的網站架構已經不同,大多採用集群的方式來實現負載均衡和高可用性,架構可以是下面的樣子:

注意:

如果涉及到多台網站伺服器的話,就會存在Session如何同步的問題,一般也是最為常用的做法,就是使用Cache中間件來存儲和管理Session信息。

3、優化的架構設計

這里為解決高並發,高可用的大型電商網站的架構設計方案,主要採用了分布式、集群、負載均衡、反向代理、消息隊列及多級緩存技術。該架構設計方案,是現今比較流程的大型電商網站採用的架構模式,比如:淘寶、京東等,也許會有細微不同的地方,但大同小異哦!具體的架構圖方案如下:

平台架構的總結

這里主要總結的是優化架構,架構按層次結構羅列組織,共分為四層,層次分工明確,高拓展,低耦合,負載均衡、集群、分布式及緩存等技術的使用,架構如下:

好了,電商平台的架構設計就介紹到這里,本篇主要是介紹架構設計的思路及應用的核心技術,供在架構設計的同學參考借鑒哦!有想了解更多的可以關注我

⑤ 急求java的手機單機賽車游戲《極品飛車16》的破解版

是新出的那個極品飛車16-亡命狂飆 吧,九游9game。Çn里有個英文破解版的,用手機登陸或用電腦opera瀏覽器登陸,去搜下很好找

⑥ java 提取字元串中包含所有的url, 正則表達式怎麼寫

import java.net.URL;

public class MainClass {

public static void main(String[] args) {

String host = "www.java2s.com";
String file = "/index.html";

String[] schemes = {"http", "https", "ftp", "mailto", "telnet", "file", "ldap", "gopher",
"jdbc", "rmi", "jndi", "jar", "doc", "netdoc", "nfs", "verbatim", "finger", "daytime",
"systemresource"};

for (int i = 0; i < schemes.length; i++) {
try {
URL u = new URL(schemes[i], host, file);
System.out.println(schemes[i] + " is supported\r\n");
} catch (Exception ex) {
System.out.println(schemes[i] + " is not supported\r\n");
}
}
}
}

⑦ 電腦有那些英語術語

相當的多,軟體硬體方面的都有,如果有機會建議讀一本關於計算機導論或入門的英文原版教材,原版教材其實並不難,裡面有好多的計算機詞彙,如果舉例我想舉一兩個意義也不大,比如顯示器monitor

⑧ 安裝hadoop的步驟有哪些

hadoop2.0已經發布了穩定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

注意:apache提供的hadoop-2.4.1的安裝包是在32位操作系統編譯的,因為hadoop依賴一些C++的本地庫,
所以如果在64位的操作上安裝hadoop-2.4.1就需要重新在64操作系統上重新編譯
(建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到群共享里了,如果有興趣的可以自己編譯一下)

前期准備就不詳細說了,課堂上都介紹了
1.修改Linux主機名
2.修改IP
3.修改主機名和IP的映射關系
######注意######如果你們公司是租用的伺服器或是使用的雲主機(如華為用主機、阿里雲主機等)
/etc/hosts裡面要配置的是內網IP地址和主機名的映射關系
4.關閉防火牆
5.ssh免登陸
6.安裝JDK,配置環境變數等

集群規劃:
主機名 IP 安裝的軟體 運行的進程
HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA183 192.168.1.183 jdk、hadoop ResourceManager
HA184 192.168.1.184 jdk、hadoop ResourceManager
HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

說明:
1.在hadoop2.0中通常由兩個NameNode組成,一個處於active狀態,另一個處於standby狀態。ActiveNameNode對外提供服務,而StandbyNameNode則不對外提供服務,僅同步activenamenode的狀態,以便能夠在它失敗時快速進行切換。
hadoop2.0官方提供了兩種HDFSHA的解決方案,一種是NFS,另一種是QJM。這里我們使用簡單的QJM。在該方案中,主備NameNode之間通過一組JournalNode同步元數據信息,一條數據只要成功寫入多數JournalNode即認為寫入成功。通常配置奇數個JournalNode
這里還配置了一個zookeeper集群,用於ZKFC(DFSZKFailoverController)故障轉移,當ActiveNameNode掛掉了,會自動切換StandbyNameNode為standby狀態
2.hadoop-2.2.0中依然存在一個問題,就是ResourceManager只有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調
安裝步驟:
1.安裝配置zooekeeper集群(在HA185上)
1.1解壓
tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
1.2修改配置
cd/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
修改:dataDir=/app/zookeeper-3.4.5/tmp
在最後添加:
server.1=HA185:2888:3888
server.2=HA186:2888:3888
server.3=HA187:2888:3888
保存退出
然後創建一個tmp文件夾
mkdir/app/zookeeper-3.4.5/tmp
再創建一個空文件
touch/app/zookeeper-3.4.5/tmp/myid
最後向該文件寫入ID
echo1>/app/zookeeper-3.4.5/tmp/myid
1.3將配置好的zookeeper拷貝到其他節點(首先分別在HA186、HA187根目錄下創建一個weekend目錄:mkdir/weekend)
scp-r/app/zookeeper-3.4.5/HA186:/app/
scp-r/app/zookeeper-3.4.5/HA187:/app/

注意:修改HA186、HA187對應/weekend/zookeeper-3.4.5/tmp/myid內容
HA186:
echo2>/app/zookeeper-3.4.5/tmp/myid
HA187:
echo3>/app/zookeeper-3.4.5/tmp/myid

2.安裝配置hadoop集群(在HA181上操作)
2.1解壓
tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環境變數中
vim/etc/profile
exportJAVA_HOME=/app/jdk1.7.0_79
exportHADOOP_HOME=/app/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoop-env.sh
exportJAVA_HOME=/app/jdk1.7.0_79

2.2.2修改core-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!--指定hadoop臨時目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop-2.4.1/tmp</value>
</property>

<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--ns1下面有兩個NameNode,分別是nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>HA181:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>HA181:50070</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>HA182:9000</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>HA182:50070</value>
</property>
<!--指定NameNode的元數據在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
</property>
<!--指定JournalNode在本地磁碟存放數據的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/app/hadoop-2.4.1/journaldata</value>
</property>
<!--開啟NameNode失敗自動切換-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置失敗自動切換實現方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
</property>
<!--配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!--使用sshfence隔離機制時需要ssh免登陸-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔離機制超時時間-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!--指定mr框架為yarn方式-->
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
</configuration>

2.2.5修改yarn-site.xml
<configuration>
<!--開啟RM高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的clusterid-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分別指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>HA183</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>HA184</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子節點的位置,因為要在HA181上啟動HDFS、在HA183啟動yarn,
所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
HA185
HA186
HA187

2.2.7配置免密碼登陸
#首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密碼登陸
#在HA181上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點,包括自己
ssh--idHA181
ssh--idHA182
ssh--idHA183
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#配置HA183到HA184、HA185、HA186、HA187的免密碼登陸
#在HA183上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置HA182到HA181的免登陸
在HA182上生產一對鑰匙
ssh-keygen-trsa
ssh--id-iHA181

2.4將配置好的hadoop拷貝到其他節點
scp-r/app/hadoop-2.5.1/HA182:/app/
scp-r/app/hadoop-2.5.1/HA183:/app/
scp-r/app/hadoop-2.5.1/HA184:/app/
scp-r/app/hadoop-2.5.1/HA185:/app/
scp-r/app/hadoop-2.5.1/HA186:/app/
scp-r/app/hadoop-2.5.1/HA187:/app/
###注意:嚴格按照下面的步驟
2.5啟動zookeeper集群(分別在HA185、HA186、tcast07上啟動zk)
cd/app/zookeeper-3.4.5/bin/
./zkServer.shstart
#查看狀態:一個leader,兩個follower
./zkServer.shstatus

2.6啟動journalnode(分別在在HA185、HA186、HA187上執行)
cd/app/hadoop-2.5.1
hadoop-daemon.shstartjournalnode
#運行jps命令檢驗,HA185、HA186、HA187上多了JournalNode進程
2.7格式化ZKFC(在HA181上執行即可) hdfszkfc-formatZK
2.8格式化HDFS
#在HA181上執行命令:
hdfsnamenode-format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這里我配置的是/app/hadoop-2.4.1/tmp,然後將/weekend/hadoop-2.4.1/tmp拷貝到HA182的/weekend/hadoop-2.4.1/下。
scp-rtmp/HA182:/app/hadoop-2.5.1/
##也可以這樣,建議hdfsnamenode-bootstrapStandby



2.9啟動HDFS(在HA181上執行)
sbin/start-dfs.sh

2.10啟動YARN(#####注意#####:是在HA183上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要佔用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
sbin/start-yarn.sh


到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
http://192.168.1.181:50070
NameNode'HA181:9000'(active)
http://192.168.1.182:50070
NameNode'HA182:9000'(standby)

驗證HDFSHA
首先向hdfs上傳一個文件
hadoopfs-put/etc/profile/profile
hadoopfs-ls/
然後再kill掉active的NameNode
kill-9<pidofNN>
通過瀏覽器訪問:http://192.168.1.182:50070
NameNode'HA182:9000'(active)
這個時候HA182上的NameNode變成了active
在執行命令:
hadoopfs-ls/
-rw-r--r--3rootsupergroup19262014-02-0615:36/profile
剛才上傳的文件依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.shstartnamenode
通過瀏覽器訪問:http://192.168.1.181:50070
NameNode'HA181:9000'(standby)

驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

OK,大功告成!!!
CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



測試集群工作狀態的一些指令:
bin/hdfsdfsadmin-report 查看hdfs的各節點狀態信息


bin/hdfshaadmin-getServiceStatenn1 獲取一個namenode節點的HA狀態

sbin/hadoop-daemon.shstartnamenode單獨啟動一個namenode進程


./hadoop-daemon.shstartzkfc單獨啟動一個zkfc進程

⑨ 如何使用java讀寫nfs文件系統中的文件

用NFS方式掛載根文件系統 由於原來的內核是用ATBOOT的方式的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式掛載的),因此決定用u-boot重新內核。 1.u-boot和內核 1.1編譯內核 1.1.1由於板子光碟自帶的內核觸

⑩ Java訪問Ubuntu的nfs共享路徑時,總是報錯

路徑是否對、許可權是否擁有

~~~~~~~~~~

熱點內容
手機路由器如何登陸密碼 發布:2025-01-12 18:35:41 瀏覽:464
電光貓無法連接伺服器是什麼原因 發布:2025-01-12 18:32:58 瀏覽:512
迷你世界測試服的密碼從哪裡打開 發布:2025-01-12 18:25:32 瀏覽:110
我的世界手游tis伺服器 發布:2025-01-12 18:24:28 瀏覽:585
青海省分布式伺服器雲主機 發布:2025-01-12 18:12:03 瀏覽:476
英雄聯盟安卓手機版怎麼切換 發布:2025-01-12 18:10:53 瀏覽:381
q5尊享時尚型哪些配置 發布:2025-01-12 18:05:41 瀏覽:229
安卓版本哪裡下載 發布:2025-01-12 18:05:39 瀏覽:557
mc伺服器搭建搜不到 發布:2025-01-12 17:57:37 瀏覽:18
手機手勢密碼忘了怎麼辦 發布:2025-01-12 17:14:51 瀏覽:487