HDFS概述(5)————HDFS HA

HA With QJM

目標

本指南概述了HDFS高可用性(HA)功能以及如何使用Quorum Journal Manager(QJM)功能配置和管理HA HDFS集群。

本文檔假設讀者對HDFS集群中的一般組件和節點類型有一般的了解。有關詳細信息,請參閱HDFS架構指南。

本指南討論如何使用Quorum Journal Manager(QJM)配置和使用HDFS HA,以在Active和Standby NameNodes之間共享編輯日志

?

背景

在Hadoop 2.0.0之前,NameNode是HDFS集群中的單點故障(SPOF)。每個集群都有一個NameNode,如果該機器或進程變得不可用,則整個集群將不可用,直到NameNode重新啟動或在單獨的計算機上啟動。

這兩個方面影響了HDFS集群的總體可用性:

  在計算機事件(例如機器崩潰)的情況下,集群將不可用,直到操作員重新啟動NameNode。

  NameNode機器上的計劃維護事件(如軟件或硬件升級)將導致集群停機時間的窗口。

HDFS高可用性功能通過提供在具有熱備用的主動/被動配置中的同一集群中運行兩個冗余名稱節點來解決上述問題。這允許在機器崩潰的情況下快速故障切換到新的NameNode,或者為了計劃維護而對管理員啟動的優化優雅轉換。

?

架構

在典型的HA集群中,將兩臺獨立的計算機配置為NameNodes。在任何時間點,其中一個NameNodes處于活動狀態,另一個處于待機狀態。Active NameNode負責集群中的所有客戶端操作,而Standby僅作為從站,維護足夠的狀態以在必要時提供快速故障轉移。

為了使備用節點保持與Active節點同步的狀態,兩個節點都與一組名為“JournalNodes”(JN)的獨立守護程序進行通信。當Active節點執行任何命名空間修改時,它可以將修改的記錄持久記錄到大多數這些JN。備用節點能夠讀取JN的編輯,并且不斷地觀察它們對編輯日志的更改。當待機節點看到編輯時,它將它們應用于自己的命名空間。在故障切換的情況下,待機將確保它已經讀取了JounalNodes的所有編輯,然后再將其自身升級到Active狀態。這將確保名稱空間狀態在發生故障轉移之前完全同步。

為了提供快速故障切換,還需要備用節點具有有關集群中塊的位置的最新信息。為了實現這一點,DataNodes配置有兩個NameNodes的位置,并向兩者發送塊位置信息和心跳。

對于HA群集的正確操作至關重要,因此一次只能有一個NameNodes處于活動狀態。否則,命名空間狀態將在兩者之間快速分離,冒著數據丟失或其他不正確的結果。為了確保這種屬性并防止所謂的“腦裂”,JournalNodes將只允許一個NameNode作為一個作者。在故障切換期間,要變為活動狀態的NameNode將簡單地接管寫入JournalNodes的角色,這將有效地防止其他NameNode繼續處于活動狀態,允許新的Active安全地進行故障轉移。

?

硬件資源

為了部署HA群集,您應該準備以下內容:

  NameNode機器 - 運行Active和Standby NameNodes的機器應具有彼此的等效硬件,以及與非HA集群中使用的硬件相同的硬件。

  JournalNode機器 - 運行JournalNodes的機器。JournalNode守護進程是相對輕量級的,因此這些守護進程可能會合理地與其他Hadoop守護程序(例如NameNodes,JobTracker或YARN ResourceManager)并置在機器上。注意:必須至少有3個JournalNode守護程序,因為編輯日志修改必須寫入大多數JN。這將允許系統容忍單個機器的故障。您也可以運行超過3個JournalNodes,但為了實際增加系統可以忍受的故障次數,您應該運行奇數JN(即3,5,7等)。請注意,當使用N JournalNodes運行時,系統最多可以忍受(N-1)/ 2故障,并繼續正常工作

請注意,在HA群集中,Standby NameNode還執行命名空間狀態的檢查點,因此不需要在HA群集中運行Secondary NameNode,CheckpointNode或BackupNode。其實這樣做會是一個錯誤。這還允許正在重新配置不支持HA的HDFS集群的HA被啟用以重新使用先前專用于Secondary NameNode的硬件。

?

部署

配置概述

與聯邦配置類似,HA配置向后兼容,并允許現有的單個NameNode配置工作,無需更改。新配置被設計為使得集群中的所有節點可以具有相同的配置,而不需要基于節點的類型將不同的配置文件部署到不同的機器。

像HDFS聯盟一樣,HA集群重新使用名稱服務ID來標識單個HDFS實例,其實際上可能由多個HA名稱節點組成。另外,一個稱為NameNode ID的新抽象與HA一起添加。群集中的每個不同的NameNode具有不同的NameNode ID來區分它。為了支持所有NameNodes的單個配置文件,相關配置參數后綴名稱服務ID以及NameNode ID。

配置細節

要配置HA NameNodes,必須在hdfs-site.xml配置文件中添加多個配置選項。

您設置這些配置的順序不重要,但是您為dfs.nameservices和dfs.ha.namenodes.[nameservice ID]選擇的值將決定隨后的鍵。因此,在設置其余的配置選項之前,您應該決定這些值。

?

dfs.nameservices? 新服務的邏輯名稱

?   為此名稱服務器選擇一個邏輯名稱,例如“mycluster”,并使用此邏輯名稱作為此配置選項的值。你選擇的名字是任意的。它將用于配置和集群中絕對HDFS路徑的權限組件。

   注意:如果您還使用HDFS聯合,則此配置設置還應包含其他名稱服務(HA或其他)的列表,以逗號分隔列表。

<property><name>dfs.nameservices</name><value>mycluster</value>
</property>

?

?dfs.ha.namenodes.[nameservice ID]? ?名稱服務中每個NameNode的唯一標識符

使用以逗號分隔的NameNode ID的列表進行配置。DataNodes將使用它來確定集群中的所有NameNodes。例如,如果以前使用“mycluster”作為nameervice ID,并且想要使用“nn1”和“nn2”作為NameNodes的個別ID,則可以將其配置為:

<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
</property>

?注意:目前,每個名稱服務器最多只能配置兩個NameNodes。

?

dfs.namenode.rpc-address.[nameservice ID].[name node ID]??每個NameNode要收聽的完全限定的RPC地址

對于以前配置的兩個NameNode ID,請設置NameNode進程的完整地址和IPC端口。請注意,這將導致兩個單獨的配置選項。例如:

<property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>machine1.example.com:8020</value>
</property>
<property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>machine2.example.com:8020</value>
</property>

注意:如果您愿意,也可以配置“servicerpc-address”設置。

?

dfs.namenode.http-address.[nameservice ID].[name node ID] ??每個NameNode要監聽的完全限定的HTTP地址

類似于上面的rpc-address,設置兩個NameNodes的HTTP服務器進行監聽的地址。例如:

<property><name>dfs.namenode.http-address.mycluster.nn1</name><value>machine1.example.com:50070</value>
</property>
<property><name>dfs.namenode.http-address.mycluster.nn2</name><value>machine2.example.com:50070</value>
</property>

注意:如果您啟用了Hadoop的安全功能,您還應該為每個NameNode設置類似的https地址

?

dfs.namenode.shared.edits.dir ?  標識NameNodes ?JN組進程將寫/讀EditLog的URI

這是一個配置提供共享編輯存儲的JournalNodes的地址,由Active nameNode寫入并由Standby NameNode讀取,以保持Active NameNode所做的所有文件系統更改的最新。雖然您必須指定幾個JournalNode地址,但您只能配置其中一個URI。URI的格式應為:“qjournal:// host1:port1; host2:port2; host3:port3 / journalId”。日記帳ID是此名稱服務的唯一標識符,允許單個JournalNodes集合為多個聯合名稱系統提供存儲。雖然不是一個要求,但是重新使用日志標識符的名稱服務ID是個好主意。

例如,如果此群集的JournalNodes在機器“node1.example.com”,“node2.example.com”和“node3.example.com”上運行,并且名稱服務ID為“mycluster”,則將使用以下作為此設置的值(JournalNode的默認端口為8485):

<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster</value>
</property>

?

?

dfs.client.failover.proxy.provider.[nameservice ID]??HDFS客戶端用于聯系Active NameNode的Java類

配置將由DFS客戶端使用的Java類的名稱來確定哪個NameNode是當前的Active,并且因此NameNode當前正在為客戶端請求提供服務。目前與Hadoop一起提供的唯一實現是ConfiguredFailoverProxyProvider,因此除非您使用自定義的。例如:

<property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

?

dfs.ha.fencing.methods?在故障切換期間將用于隔離Active NameNode的腳本或Java類的列表

對于系統的正確性,期望在任何給定時間只有一個NameNode處于活動狀態。重要的是,當使用Quorum Journal Manager時,只有一個NameNode將被允許寫入JournalNodes,所以不存在從裂腦場景中破壞文件系統元數據的可能性。但是,當發生故障切換時,以前的Active NameNode可能會向客戶端提供讀取請求,這可能是過期的,直到該NameNode在嘗試寫入JournalNodes時關閉。因此,即使使用Quorum Journal Manager,仍然需要配置一些防護方法。但是,為了提高系統在防護機制發生故障時的可用性,建議配置防護方法,保證將其作為列表中最后的防護方法返回成功。請注意,如果您選擇不使用實際的防護方法,您仍然必須為此設置配置一些東西,例如“shell(/ bin / true)”。

在故障切換期間使用的防護方法被配置為回車分隔列表,將按順序嘗試,直到一個指示擊劍成功。Hadoop有兩種方法:shell和sshfence。有關實現自己的定制防護方法的信息,請參閱org.apache.hadoop.ha.NodeFencer類。

  sshfence? ?SSH到Active NameNode并終止進程

   sshfence選項SSHes到目標節點,并使用fuser來殺死監聽服務的TCP端口的進程。為了使這個防護選項工作,它必須能夠SSH到目標節點而不提供密碼。因此,還必須配置dfs.ha.fencing.ssh.private-key-files選項,該選項是以逗號分隔的SSH私鑰文件列表。例如:

    <property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/exampleuser/.ssh/id_rsa</value></property>

    或者,可以配置非標準用戶名或端口來執行SSH。也可以為SSH配置超時時間(以毫秒為單位),之后該防護方法將被認為失敗。它可以像這樣配置:  

    <property><name>dfs.ha.fencing.methods</name><value>sshfence([[username][:port]])</value></property><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property>

  shell?運行一個任意的shell命令來終止Active NameNode  
    shell防護方法運行任意shell命令。它可以像這樣配置:

<property><name>dfs.ha.fencing.methods</name><value>shell(/path/to/my/script.sh arg1 arg2 ...)</value>
</property>

    '('and')'之間的字符串直接傳遞給bash shell,可能不包括任何關閉括號。

    shell命令將運行,環境設置為包含所有當前的Hadoop配置變量,'_'字符替換任何'。'。配置鍵中的字符。所使用的配置已經具有提升為其通用形式的任何特定于Namenode的配置 - 例如,dfs_namenode_rpc-address將包含目標節點的RPC地址,即使配置可以將該變量指定為dfs.namenode.rpc-address。ns1.nn1。

    另外,還可以使用下列變量來指定要圍欄的目標節點:

$target_hosthostname of the node to be fenced
$target_portIPC port of the node to be fenced
$target_addressthe above two, combined as host:port
$target_nameserviceidthe nameservice ID of the NN to be fenced
$target_namenodeidthe namenode ID of the NN to be fenced

    這些環境變量也可以用作shell命令本身的替代。例如:

<property><name>dfs.ha.fencing.methods</name><value>shell(/path/to/my/script.sh --nameservice=$target_nameserviceid $target_host:$target_port)</value>
</property>

如果shell命令返回0的退出代碼,則確定擊劍是成功的。如果返回任何其他退出代碼,則擊劍不成功,并且將嘗試列表中的下一個擊劍方法。
注意:此防護方法不會執行任何超時。如果超時是必要的,它們應該在shell腳本本身中實現(例如,通過在幾秒鐘內分割子shell來殺死其父進程)。

fs.defaultFS  當沒有給出Hadoop FS客戶端時使用的默認路徑前綴

或者,您現在可以配置Hadoop客戶端的默認路徑以使用新的啟用HA的邏輯URI。如果您以前使用“mycluster”作為名稱服務ID,則這將是所有HDFS路徑的權限部分的值。在core-site.xml文件中可以這樣配置:

<property><name>fs.defaultFS</name><value>hdfs://mycluster</value>
</property>

?

dfs.journalnode.edits.dir?JournalNode守護程序將存儲其本地狀態的路徑

這是日志節點計算機上絕對路徑,其中JN將使用編輯和其他本地狀態。您只能使用單一路徑進行此配置。通過運行多個獨立的JournalNodes或通過在本地連接的RAID陣列上配置此目錄來提供此數據的冗余。例如:

<property><name>dfs.journalnode.edits.dir</name><value>/path/to/journal/node/local/data</value>
</property>

?

部署細節

//TODO:

?

?

?

HA With NFS

目標

本指南概述了HDFS高可用性(HA)功能,以及如何配置和管理HA HDFS集群,使用NFS作為NameNodes所需的共享存儲。

本文檔假設讀者對HDFS集群中的一般組件和節點類型有一般的了解。有關詳細信息,請參閱HDFS架構指南。

架構

在典型的HA集群中,將兩臺獨立的計算機配置為NameNodes。在任何時間點,其中一個NameNodes處于活動狀態,另一個處于待機狀態。Active NameNode負責集群中的所有客戶端操作,而Standby僅作為從站,維護足夠的狀態以在必要時提供快速故障轉移。

為了使備用節點將其狀態與Active節點保持同步,當前實現要求兩個節點都可以訪問共享存儲設備上的目錄(例如,從NAS安裝NFS)。這種限制在將來的版本中可能會放寬。

當Active節點執行任何命名空間修改時,它可以將修改的記錄持久記錄到共享目錄中存儲的編輯日志文件中。待機節點一直在觀看此目錄以進行編輯,并且當它看到編輯時,它將其應用于其自己的命名空間。在故障切換的情況下,待機將確保已經從共享存儲中讀取所有編輯,然后再將其自身升級到活動狀態。這將確保名稱空間狀態在發生故障轉移之前完全同步。

為了提供快速故障切換,還需要備用節點具有有關集群中塊的位置的最新信息。為了實現這一點,DataNodes配置有兩個NameNodes的位置,并向兩者發送塊位置信息和心跳

對于HA群集的正確操作至關重要,因此一次只能有一個NameNodes處于活動狀態。否則,命名空間狀態將在兩者之間快速分離,冒著數據丟失或其他不正確的結果。為了確保這種屬性并防止所謂的“腦裂”,JournalNodes將只允許一個NameNode作為一個作者。在故障切換期間,要變為活動狀態的NameNode將簡單地接管寫入JournalNodes的角色,這將有效地防止其他NameNode繼續處于活動狀態,允許新的Active安全地進行故障轉移。

?

硬件資源

為了部署HA群集,您應該準備以下內容:

  NameNode機器 - 運行Active和Standby NameNodes的機器應具有彼此的等效硬件,以及與非HA集群中使用的硬件相同的硬件。

  共享存儲 - 您將需要一個共享目錄,這兩個NameNode機器可以具有讀/寫訪問權限。通常這是一個遠程文件管理器,它支持NFS并安裝在每個NameNode機器上。目前只支持單個共享編輯目錄。因此,系統的可用性受到該共享編輯目錄的可用性的限制,因此為了刪除共享編輯目錄需要冗余的所有單個故障點。具體來說,存儲的多個網絡路徑,以及存儲本身的冗余(磁盤,網絡和電源)。扼殺這一點,建議共享存儲服務器是高品質的專用NAS設備,而不是一個簡單的Linux服務器。

請注意,在HA群集中,Standby NameNode還執行命名空間狀態的檢查點,因此不需要在HA群集中運行Secondary NameNode,CheckpointNode或BackupNode。其實這樣做會是一個錯誤。這還允許正在重新配置不支持HA的HDFS集群的HA被啟用以重新使用先前專用于Secondary NameNode的硬件。

?

轉載于:https://www.cnblogs.com/Dhouse/p/7447428.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MFC動態創建菜單

http://blog.csdn.net/csdnzhwk/article/details/47395639轉載于:https://www.cnblogs.com/darknoll/p/6252917.html

RTP/RTCP

http://hi.baidu.com/ilovejoy/blog/item/daee10efa91e501afdfa3c5f.html http://hi.baidu.com/kikicat0_0/blog/item/6fed87b4b4fb89c536d3ca91.html

HDR 成像技術學習(二)

回顧下之前介紹的內容: HDR成像技術學習(一) 介紹了從HDR、HDR+等多幀HDR技術到硬件的單幀HDR技術。 從技術上來說,單幀HDR要比多幀HDR簡單不少,在早期設備處理能力不足的時候,速度快,沒拖影,性能要求低的單幀HDR反而要更有優勢。到了HDR+時代,單幀HDR漸漸不…

go微服務框架go-micro深度學習(一) 整體架構介紹

產品嘴里的一個小項目&#xff0c;從立項到開發上線&#xff0c;隨著時間和需求的不斷激增&#xff0c;會越來越復雜&#xff0c;變成一個大項目&#xff0c;如果前期項目架構沒設計的不好&#xff0c;代碼會越來越臃腫&#xff0c;難以維護&#xff0c;后期的每次產品迭代上線…

雜記---待整理

---恢復內容開始--- shell高亮顯示 echo -e 終端顏色 顯示內容 結束后的顏色 \e[1;31m content \e[1;0m 1為設置&#xff0c;0為不設置。 31m 0m為顏色 [ucmMacBook-Pro testpace]$ echo -e "\e[1;31m consumer huawei com \e[1;0m"consumer huawei com [ucmMacBook…

(轉載)項目實戰工具類(一):PhoneUtil(手機信息相關)

項目實戰工具類&#xff08;一&#xff09;&#xff1a;PhoneUtil&#xff08;手機信息相關&#xff09; 可以使用的功能&#xff1a; 1、獲取手機系統版本號 2、獲取手機型號 3、獲取手機寬度 4、獲取手機高度 5、獲取手機imei串號 ,GSM手機的 IMEI 和 CDMA手機的 MEID. 6、…

手把手教你寫Linux I2C設備驅動

手把手教你寫Linux I2C設備驅動 標簽&#xff1a;Linux 設備 驅動 詳解 i2c 原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://ticktick.blog.51cto.com/823160/760020 Linux I2C驅動是嵌入…

HDR 成像技術學習(三)—— LOFIC

HDR 成像技術學習(一) HDR 成像技術學習(二) 我們拍攝的照片來自傳感器上的像素,它們將光處理為電信號,組合起來輸出畫面。當捕捉對象亮度過強,大量電荷擠在單個像素內,生成的圖像就會過曝。 LOFIC(Lateral Overflow Integration Capacitor,橫向溢出集合電容…

[模板]平面最近點對

實現 將平面內點按$x$坐標排序,分治$x$坐標,設$retmin(f(l,mid),f(mid1,r))$, 將$x\in[mid-ret,midret]$內的點按$y$坐標排序,算每個點與相鄰的$6$個點的距離找最優解即可. 時間復雜度:$O(nlogn)$. #define N 100005 #define INF 1e15 struct point{double x,y; }p[N]; inline …

人工智能與圖像傳感器

隨著人工智能時代的來臨,相應的芯片產品和行業也產生了相應的新方向。 在人工智能的各個分支中,機器視覺無疑是應用最廣泛的方向,它支撐著諸如人臉檢測、工業異常檢測、手勢識別等諸多重要的應用。顧名思義,機器視覺是使用機器學習/人工智能的方法來分析視覺信號,并且通過…

用戶空間訪問I2C設備驅動

2012-01-11 15:33:43標簽&#xff1a;Linux I2C 字符設備 設備驅動 用戶空間 原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://ticktick.blog.51cto.com/823160/761830 關于Linux下如何編…

097實戰 關于ETL的幾種運行方式

一&#xff1a;代碼部分 1.新建maven項目 2.添加需要的java代碼   3.書寫mapper類 4.書寫runner類 二&#xff1a;運行方式 1.本地運行 2.集群運行 3.本地提交集群運行 三&#xff1a;本地運行方式 1.解壓hadoop到本地 2.修改配置文件HADOOP_HOME 3.解壓common的壓縮包 4.將壓…

模擬ssh, hashlib模塊, struct模塊, subprocess模塊

一. 模擬ssh # 服務器端 import socket import subprocess # 系統操作server socket.socket()server.bind((127.0.0.1,8008))server.listen(5)while True:print("server is working.....")conn,addr server.accept()# 字節類型while True:# 針對window系統try:…

使用pssh進行并行批量操作

假如同時給上千臺服務器執行一個命令,拷貝一個文件,殺一個進程等,有什么簡化運維管理的工具呢?在小型使用中我都是使用for循 環,數量巨大,一方面不確定操作是否成功,一方面for循環語句性能不好估計且是不是同步并行執行.&#xff0c;這類工具比如 pdsh&#xff0c;mussh&#…

圖像清晰度評價函數

概述 圖像清晰度是用來指導調焦機構找到正焦位置的評價函數。理想的清晰度評價曲線如下圖所示,其中P 是評價函數最大值的位置,其對應正焦位置,P1 和P2 為正焦位置焦前和焦后采集到圖像的清晰度評價結果。 為了指導調焦機構找到正焦位置,清晰度曲線須具有以下特點: 單…

Linux下讀寫芯片的I2C寄存器

Linux下讀寫芯片的I2C寄存器 2012-01-10 11:40:18 標簽&#xff1a;Linux 寄存器 驅動 讀寫 I2C 原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://ticktick.blog.51cto.com/823160/76096…

列表和表格---學習筆記02

第7章 列表和表格 7.1 有序列表<ol type"A"><li>這里是第1個li</li><li>這里是第2個li</li><li>這里是第3個li</li></ol> ol屬性&#xff1a;type : 數字(1),大小寫字母(A,a),大小寫羅馬數字(I,i)start: "起始…

(下)挖掘傳統行業日志大數據的無限價值

&#xfffc;8 月 27 日晚上八點&#xff0c;七牛云高級解決方案架構師程雪松在 IT 大咖說進行了題為《挖掘傳統行業日志大數據的無限價值》的直播&#xff0c;對傳統行業運維常見困境和統一日志管理的必要性進行了深入解析&#xff0c;并通過 Pandora 的一些真實用戶案例和大家…

CMOS圖像傳感器 —— ISOCELL

最近,外媒曝光了三星最新的CIS傳感器路線圖,路線圖顯示,三星在2億像素之外已經規劃2025年推出576MP像素的傳感器,也就是5億7千6百萬像素。 若5.76億像素的傳感器推出,意味著手機傳感器可媲美中高端單反水平了。三星沒有提及這個5.76億像素的傳感器是怎樣實現的。因…

LeetCode 153. Find Minimum in Rotated Sorted Array (在旋轉有序數組中找到最小值)

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 題目標簽&#xff1a;Array, Binary Se…