面試題包括Java、大數據開發、大數據運維、大數據分析、大數據架構等等
想進大廠拿高薪的小伙伴,來吧,掃碼加微,組隊一起搞定面試官。文章篇幅有限,部分問題如下,還有直播答疑,敬請期待。
Q1:老師線上 6000+規模集群,拋開一些其它組件集群,僅討論 HDFS 數據存儲集群,保守理應也在有 3000 節點左右,想知道這些存儲節點只是單集群NameNode 集群來維護嗎?還是多集群獨立維護的,如果是多集群存儲數據,它們之間數據是如何打通進行關聯的?如果僅是一個集群的話,我想知道這個集群的 NameNode 上的配置,是如何 Hold 住這些數據 DataNode的?
夏天老師:
我們的集群也是用的 Cloudera 公司的,我們付了費用, Cloudera 沒有保障說 CM 能夠納管 1000 節點以上的集群,再加上我們的機房有容量限制,所以我們是建了多套集群,最大集群有 800+節點,最小集群也有 300+節點;800+datanode 下, namenode 是可以支撐的,像一些互聯網大廠,字節跳動、京東等他們的單集群規模有上萬節點,此時就需要對 hdfs 進行深度定制了,他們改了很多源碼,而且有 200+高級技術維護人員;
多集群建設要考慮業務情況,比如我們公司有 10 個以上業務, 5 大核心集群,按業務相關情況划分集群,不過也難免有跨集群的作業,目前公司內部自研發了大數據采集交換平台,你也可以使用 distcp 進行數據對拷,目前我們也正在准備自研發多集群並行混算平台。
Q2:集群線上擴容如何達到自動化?線上擴容,規模正常都以 10+以上,如果都以課堂所示,人肉操作,時間投入與產出比不匹配,人力造成很大的不必要浪費,想學習老師線上集群實際擴容的方案。
夏天老師:
課堂所示兼顧了小白同學,所以是手把手純人肉搭建,產線環境擴容數量少則幾十多則上百,人肉肯定不行,我們公司的運維分為 IAAS 運維、大數據運維、應用運維,大數據運維工程師在擴容集群時,需要向 IAAS 運維工程師以工單的方式申請服務器並提出自己的需求, IAAS 運維工程師在提供服務器時不管是新采購服務器還是其他集群退役的服務器都需要重裝系統,重裝系統的鏡像是針對大數據定制的,鏡像包含了大數據運維工程師的通用需求以及安裝操作系統后的網絡、磁盤以及其他設置,比如關閉防火牆、時鍾同步、同構磁盤掛載、關閉大透明頁、關閉 SWAP、公用 YUM 源、禁用 SELinux 等模式化操作,大數據運維工程師收到服務器后准備工作基本准備完畢了,進行少量准備工作就可以直接進入了 CM 可視化批量安裝模式,比如腳本批量設置hostname、腳本同步/etc/hosts 文件等; 當然如上所說的 IAAS 操作,如關閉防火牆、時鍾同步、同構磁盤掛載、關閉大透明頁、關閉 SWAP、公用YUM 源、禁用 SELinux 都可以腳本化,無非就是使用 SSH 通訊方式設置,這就需要大數據運維同學熟練使用 shell 了。
Q3:已知一個 HDFS 的目錄,想知道此目錄下的文件數,而且存儲於哪些DataNode 節點上。
夏天老師:
1.查看文件數使用 count 命令,如下查看/ops 目錄,目錄數為 9606,文件數為 1353 萬+,總文件大小為 9.7P
2.2.查看/ops/test 目錄下的文件存儲的位置hdfs fsck /ops/test -files -blocks -locations -racks
Q4:DataNode 單節點,存儲容量大小與當前節點上的 CPU,內存硬件之間有什么樣的關系,磁盤擴容很容易,但這不意味着單節點上數據盤就可以無限地擴容,因此在這方面,有什么實際線上的經驗分享,即這三者間可以遵循怎樣合適的關系
夏天老師:
從我們內部實踐來說沒有發現三者之間的規律,因為大數據業務每個公司都不一樣,有的計算是 CPU 密集型的,有的計算是內存密集型的、有的計算是IO 密集型的;我們的服務器都是中高配置,每個服務器的磁盤是 4Tx10、 CPU24core、128G 內存
Q5: HDFS 存儲節點上的數據,存儲壓縮格式是如何選取的,默認采用哪種文件存儲類型與存儲格式,冷熱數據如何界定的?
夏天老師:
我們產線環境用了 gz 和 snappy 壓縮格式, gz 用於不常用的冷數據,snappy 用於熱數據;冷熱數據是跟業務相關的,后續集群治理的課程中也有冷熱數據的區分。
Q6:課堂上看到 HDFS 集群的 DataNode 與 HBASE 是集成在一起部署的,我好奇, HBase 面向的都是高頻率讀寫的業務,老師確定部署一起后,線上業務沒有出現過問題嗎?
夏天老師:
你應該是理解錯了, HBase 不能跟 YARN 在一起部署; HBase 需要跟HDFS 部署在一起的,這樣可以利用數據本地性提升 IO 性能,並且可以降低網絡延遲,降低帶寬負載。
Q7: Yarn 集群計算層,目前集群面向用戶使用群體少,故白天僅是數據寫入,集群 CPU 資源都較為存在大量冗余狀態,但對於凌晨執行集中高頻提交跑批作業計算任務時,集群的 CPU 資源明顯不夠,甚至引起節點 CPU 負載過高導致節點的宕機,從而造成集群雪崩。簡單來說,白天集群資源使用率在5%,凌晨執行高頻跑批作業任務時,資源使用率上到 100%,引起集群宕機。在不增加資源的前提下,資源老師會如何划分隊列?
夏天老師:
這個划分隊列無法解決根本問題,建議將業務划分優先級,錯開時間執行。
Q8.某一台 CDH 物理機 12 塊 RAID0 硬盤,如果其中有 4 塊 RAID0 硬盤同時損壞,請問接下來大數據運維人員的詳細處理流程是什么?
夏天老師:
HDFS 有個參數 dfs.datanode.failed.volumes.tolerated,值為 0 的時候表示當有任何盤損壞后 datanode 則停止服務,如果 4 快盤同時損壞了,此時datanode 進程已經停止了,你可以修改 hdfs-site.xml 配置文件將損壞的磁盤路徑去掉,重啟 datanode 即可,然后進入磁盤報修流程,待磁盤更換后,停止 datanode,在 hdfs-site.xml 配置文件中假如新的磁盤,啟動 datanode 即可。
Q9.CDH 如果為開發人員提供 HIVESERVER2 服務,可以讓開發人員通過beeline 命令訪問?
夏天老師:
是的, beeline 使用 JDBC 協議來連接 HIVESERVER2
Q10.在晚高峰期 HDFS 集群會出現某些 datanode 不穩定的情況,頻繁有datanode 脫離節點,該如何處理呢?
夏天老師:
需要找到 datanode 的具體原因, datanode 相對來說還是比較穩定的,需要看下是否是 GC 問題,如果是的話適當調大內存,再看下最大的打開文件數或進程數的限制是否太小
Q11.CDH 集群擴容 10 台機器后,新加入的 Datanode 角色數據相對較少,如何處理 HDFS 的數據分布不均衡的現象呢?
夏天老師:
在內存占用較低的節點上啟動 balancer 腳本,將 HDFS 中所有節點的存儲值中的最低值和平均值的差值設置為 5%。命令: ./start-balancer.sh -threshold 5
Q12.CDH 監控項從某種角度來說並不是很細粒度,老師課上可能時間有限等原因只是稍微提了一下監控思路,請問您線上是如何監控的呢,能將詳細步驟給我們刨析一下嗎?
夏天老師:
目前我們產線環境還是以 CDH 監控為主, CDH 的指標還是挺多的,只不過保留的周期不長,對於排障來說基本夠用了,當然我們會推進一些監控工具,不過在課堂不會展開細講,后續有 Flink 監控方面的實戰。
Q13.如何基於 CDH 集群監控大量的小文件的呢?衡量小文件標准,以及出現大量小文件在生產環境該如何解決呢?
夏天老師:
CM 解決不了大量小文件的監控,需要額外做其他工作,這塊在集群治理里面我們會詳細講;對於怎么衡量小文件的標准,你可以簡單認為小於 blocksize 的文件就是小文件,但是在企業真實情況下小文件問題可能更加嚴重,比如大量 10M、幾十 M 以下的文件,單純技術無法解決問題,需要組織協同,這個在集群治理里面我們會詳細講。
Q14.之前上課只是大致提了一下 YARN 資源調度,生產環境使用 CDH 如何配置 YARN 資源隊列調度,在咱們后續的課程還會講嗎?
夏天老師:
這個會講解的,也會講解我們產線環境是如何划分隊列的。
Q15.CDH 如何對 HDFS 各級目錄做權限管理,目錄的配額(即使用 HDFS 的容量限制)限制呢?
夏天老師:
HDFS 可通過 ACL 精細控制目標權限,除了 ACL 后續我們也會講sentry;目前我們產線環境沒有做容量配額限制,怕影響生產,我們通過集群治理來解決容量問題,集群治理是我們的課程內容之一,后續會講解
Q16.Hdfs,Yarn,MapReduce,Hive,Spark,Storm,Kafka,Flink 這些組件您在生產環境的調優參數是如何配置的,后續會為我們分享一些調優參數及說明么?我們也方便對照自己的集群作為參考適當調整。
夏天老師:
這個是會的,我們會講組件的運維、巡檢、監控、參數配置、故障排查等課程內容。
Q17.后期的大數據組件監控項目是針對課上所有的組件進行監控的么?還是只是分享監控思路,代碼能給我們學員嗎?
夏天老師:
大數據組件監控主要在 CM 上進行監控,后續有集群治理案例實戰,實戰代碼可以給學員的。
未完待續………
閑話少說,掃碼加微,組隊一起搞定面試官。