大數據面試題總結(附答案)

文章目錄

  • 前言
    • hadoop相關試題
    • Hive相關試題
    • Hbase相關試題
    • Storm相關試題
    • Spark相關試題
    • Java基礎試題
    • 其他

前言

最近由于要準備面試就開始提早看些面試、筆試題。以下是自己總結的一些經常出現、有價值的試題,包含hadoop、hive、hbase、storm、spark等。答案僅供參考,如有錯誤,請指出。試題不定時更新。

hadoop相關試題

  1. MapTask并行機度是由什么決定的?
    由切片數量決定的。

  2. MR是干什么的?
    MR將用戶編寫的業務邏輯代碼和自帶的默認組件結合起來組成一個完整的分布式應用程序放到hadoop集群上運行。

  3. MR的實例進程:
    driver(mr的job提交客戶端)
    MRAppMaster
    MapTask
    ReduceTask

  4. combiner和partition的作用:
    combiner的意義就是對每一個maptask的輸出進行局部匯總,以減小網絡傳輸量
    partition的默認實現是hashpartition,是map端將數據按照reduce個數取余,進行分區,不同的reduce來copy自己的數據。
    partition的作用是將數據分到不同的reduce進行計算,加快計算效果。

  5. 什么是shuffle
    map階段處理的數據如何傳遞給reduce階段,是mapreduce框架中最關鍵的一個流程,這個流程就叫shuffle;
    shuffle: 洗牌、發牌——(核心機制:數據分區,排序,緩存);
    具體來說:就是將maptask輸出的處理結果數據,分發給reducetask,并在分發的過程中,對數據按key進行了分區和排序;

  6. MR原理(詳細解釋參照:MR運行原理剖析):
    InputFormat來讀取數據,按行讀取,返回KV值傳到map方法中,
    context.write方法將處理后數據輸出到outputCollector中,
    當outputCollector中的數據累計到一定數量后再將數據傳到內存的環形緩沖區做處理,
    當環形緩沖區中的數據累積到一定數量后再將數據通過Splier多次溢出到本地磁盤的多個文件中,期間會對各個溢出的數據進行分區、排序
    然后對多個文件進行merge(歸并排序)形成一個輸出結果大文件
    ruduceTask根據自己的分區號去各個mapTask機器上取輸出結果文件
    將得到的各個結果文件進行merge,然后進入reduce階段,
    context.write將最終結果輸出到outPutformat上,進而輸出到本地文件中。

  7. 舉一個簡單的例子說明mapreduce是怎么來運行的 ?
    wd例子。詳細解釋參考:Wd詳解

  8. 什么是yarn?
    Yarn是一個資源調度平臺,負責為運算程序提供服務器運算資源,相當于一個分布式的操作系統平臺,而mapreduce等運算程序則相當于運行于操作系統之上的應用程序。

  9. namenode的safemode是怎么回事?如何才能退出safemode?
    namenode在剛啟動的時候元數據只有文件塊信息,沒有文件所在datanode的信息,需要datanode自己向namenode匯報。如果namenode發現datanode匯報的文件塊信息沒有達到namenode內存中所有文件塊的總閾值的一個百分比,namenode就會處于safemode。
    只有達到這個閾值,namenode才會推出safemode。也可手動強制退出。

  10. secondarynamenode的主要職責是什么?簡述其工作機制
    sn的主要職責是執行checkpoint操作
    每隔一段時間,會由secondary namenode將namenode上積累的所有edits和一個最新的fsimage下載到本地,并加載到內存進行merge(這個過程稱為checkpoint)

  11. 如果namenode宕機,datanode節點是否也會跟著掛掉?

  12. 一個datanode 宕機,怎么一個流程恢復?
    Datanode宕機了后,如果是短暫的宕機,可以實現寫好腳本監控,將它啟動起來。如果是長時間宕機了,那么datanode上的數據應該已經被備份到其他機器了,
    那這臺datanode就是一臺新的datanode了,刪除他的所有數據文件和狀態文件,重新啟動

  13. hadoop 的 namenode 宕機,怎么解決?
    先分析宕機后的損失,宕機后直接導致client無法訪問,內存中的元數據丟失,但是硬盤中的元數據應該還存在,如果只是節點掛了,
    重啟即可,如果是機器掛了,重啟機器后看節點是否能重啟,不能重啟就要找到原因修復了。
    但是最終的解決方案應該是在設計集群的初期就考慮到這個問題,做namenode的HA。

  14. 簡述hadoop安裝
    改IP,修改Host文件;
    裝JDK配置環境變量;
    裝Hadoop配置環境變量;
    修改hadoop的配置文件如core-site、marp-site、yarn-site、dfs-site等;
    namenode進行格式化;
    start-all;

  15. 請列出hadoop正常工作時要啟動那些進程,并寫出各自的作用。
    namenode:管理集群并記錄datanode的元數據,相應客戶端的請求。
    seconder namenode:對namenode一定范圍內的數據做一份快照性備份。
    datanode:存儲數據。
    jobTracker:管理客戶端提交的任務,并將任務分配給TaskTracker。
    TaskTracker:執行各個Task。

  16. JobTracker和TaskTracker的功能
    JobTracker是一個master服務,軟件啟動之后JobTracker接收Job,負責調度Job的每一個子任務task運行于TaskTracker上,
    并監控它們,如果發現有失敗的task就重新運行它。一般情況應該把JobTracker部署在單獨的機器上。
    TaskTracker是運行在多個節點上的slaver服務。TaskTracker主動與JobTracker通信,接收作業,并負責直接執行每一個任務。

  17. 用mapreduce怎么處理數據傾斜問題?
    數據傾斜:map /reduce程序執行時,reduce節點大部分執行完畢,但是有一個或者幾個reduce節點運行很慢,導致整個程序的處理時間很長,
    這是因為某一個key的條數比其他key多很多(有時是百倍或者千倍之多),這條key所在的reduce節點所處理的數據量比其他節點就大很多,
    從而導致某幾個節點遲遲運行不完,此稱之為數據傾斜。
    解決:自己實現partition類,用key和value相加取hash值。

  18. Mapreduce 的 map 數量 和 reduce 數量 怎么確定 ,怎么配置?
    map的數量有數據塊決定,reduce數量隨便配置。

  19. hdfs的體系結構
    hdfs有namenode、secondraynamenode、datanode組成。
    namenode負責管理datanode和記錄元數據
    secondraynamenode負責合并日志
    datanode負責存儲數據

  20. 說下對hadoop 的一些理解,包括哪些組件
    詳談hadoop的應用,包括的組件分為三類,分別說明hdfs,yarn,mapreduce。

  21. 一些傳統的hadoop 問題,mapreduce 他就問shuffle 階段,你怎么理解的
    Shuffle意義在于將不同map處理后的數據進行合理分配,讓reduce處理,從而產生了排序、分區。

  22. NameNode 負責管理 metadata,client 端每次讀寫請求,它都會從磁盤中讀取或則會寫入 metadata信息并反饋client 端。(錯誤)
    修改后分析:
    NameNode 不需要從磁盤讀取 metadata,所有數據都在內存中,硬盤上的只是序列化的結果,只有每次
    namenode 啟動的時候才會讀取。

Hive相關試題

  1. 你的數據庫是不是很大么,有沒有分表,分區,你是怎么實現的
    hive內部表和外部表的區別
    內部表:加載數據到hive所在的hdfs目錄,刪除時,元數據和數據文件都刪除
    外部表:不加載數據到hive所在的hdfs目錄,刪除時,只刪除表結構。

  2. 分桶的作用
    最大的作用是提高join的效率。(1)獲得更高的查詢處理效率。(2)使取樣(sampling)更高效。

  3. Hive 你們用的是外部表還是內部表,有沒有寫過UDF。
    UDF:
    1、寫對應的java代碼自定義函數的邏輯
    2、將代碼打成jar包上傳到hive
    3、在hive創建臨時函數與對應的class類相關聯
    4、在hive中調用臨時函數。

Hbase相關試題

  1. hbase的rowkey怎么創建好?列族怎么創建比較好?(重點)
    hbase存儲時,數據按照Row key的字典序(byte order)排序存儲。設計key時,要充分利用排序存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性)
    一個列族在數據底層是一個文件,所以將經常一起查詢的列放到一個列族中,列族盡量少,減少文件的尋址時間。
  2. Redis,傳統數據庫,hbase,hive 每個之間的區別?(問的非常細)
    redis:分布式緩存,強調緩存,內存中數據
    傳統數據庫:注重關系
    hbase:列式數據庫,無法做關系數據庫的主外鍵,用于存儲海量數據,底層基于hdfs
    hive:數據倉庫工具,底層是mapreduce。不是數據庫,不能用來做用戶的交互存儲
  3. hdfs 和 hbase 各自使用場景。
    整理總結:
    首先一點需要明白:Hbase 是基于 HDFS 來存儲的。
    HDFS:
    1、一次性寫入,多次讀取。
    2、保證數據的一致性。
    3、主要是可以部署在許多廉價機器中,通過多副本提高可靠性,提供了容錯和恢復機制。
    Hbase:
    1、瞬間寫入量很大,數據庫不好支撐或需要很高成本支撐的場景。
    2、數據需要長久保存,且量會持久增長到比較大的場景
    3、hbase 不適用與有 join,多級索引,表關系復雜的數據模型
    4、大數據量 (100s TB 級數據) 且有快速隨機訪問的需求。
    如:淘寶的交易歷史記錄。數據量巨大無容置疑,面向普通用戶的請求必然要即時響應。
    5、容量的優雅擴展
    大數據的驅使,動態擴展系統容量的必須的。例如:webPage DB。
    6、業務場景簡單,不需要關系數據庫中很多特性(例如交叉列、交叉表,事務,連接等等)
    7、優化方面:合理設計 rowkey。因為 hbase 的查

Storm相關試題

  1. 公司技術選型可能利用storm 進行實時計算,講解一下storm
    描述下storm的設計模式,是基于nimbus、supervisor、work、task的方式運行代碼,由spout、bolt組成等等。
  2. 實時流式計算框架,幾個人,多長時間,細節問題,包括講flume ,kafka ,storm
    的各個的組件組成,你負責那一塊,如果需要你搭建你可以完成么?(多次提到)

Spark相關試題

  1. 你覺得spark 可以完全替代hadoop 么?
    spark會替代mr,不會代替yarn和hdfs.
  2. 公司之后傾向用spark 開發,你會么(就用java代碼去寫)
    會,spark使用scala開發的,在scala中可以隨意使用jdk的類庫,可以用java開發,但是最好用原生的scala開發,兼容性好,scala更靈活。
  3. 介紹下Spark
    基于內存的分布式計算框架,基于Master、Worker、Executer模式運行,基本數據抽象為RDD(分布式數據集)。Spark Streaming類似于Apache Storm,用于流式數據的處理

Java基礎試題

請參考
http://blog.csdn.net/qq_16633405/article/details/79211002

其他

  1. 簡單介紹下flume、sqoop、azkaban
    flume:分布式數據采集框架,核心校色agent由source、channel、sink組成。
    sqoop:hadoop和關系型數據庫傳送數據的工具。
    azkaban:工作流調度器。

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

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

相關文章

win7 IE11卸載后無法上網

今天某同事需要訪問一個銀行網站,必須使用IE8,我在win7中降級IE11,直接卸載了IE11和其語言包,發現IE8再也打不開網頁了,每次打開都提示保存html網頁。測試Google Chrome上網完全沒有問題。IE8的internet選項等任何工具菜單點擊均無反應&#…

關于django的模板

模板 問題 如何向請求者返回一個漂亮的頁面呢? 肯定需要用到html、css,如果想要更炫的效果還要加入js,問題來了,這么一堆字段串全都寫到視圖中,作為HttpResponse()的參數嗎?這樣定義就太麻煩了吧&#x…

Hbase簡介及常用命令相關知識總結

文章目錄目錄前言:1.Hbase簡介1.1、什么是Hbase1.2、與傳統數據庫的對比1.3、Hbase集群中的角色2、Hbase數據模型3、Hbase命令總結:目錄 前言: 對于Hbase來說,由于其是基于列的數據庫,所以比傳統的數據庫快許多&…

Django中模型類 屬性-學習筆記

定義屬性 Django根據屬性的類型確定以下信息: 當前選擇的數據庫支持字段的類型渲染管理表單時使用的默認html控件在管理站點最低限度的驗證 django會為表創建自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設置某屬性為主鍵列后d…

Angular Redux

Angular Redux 轉載于:https://www.cnblogs.com/skating/p/6185878.html

AtomicInteger相關類

在java6以后我們不但接觸到了Lock相關的鎖,也接觸到了很多更加樂觀的原子修改操作,也就是在修改時我們只需要保證它的那個瞬間是安全的即可,經過相應的包裝后可以再處理對象的并發修改,以及并發中的ABA問題,本文講述At…

Storm入門簡介

目錄前言:1、Storm簡介2、Storm與Hadoop的區別3、Storm核心組件4、Storm編程模型5、流式計算一般架構圖(重要)總結: 目錄 前言: 在介紹Storm之前,先介紹下離線計算。 離線計算:批量獲取數據…

項目完成

完成示例項目 現在還需要的代碼包括三個方面,三個方面順序不分先后。 1.定義視圖2.定義URLconf3.定義模板 定義視圖 編寫booktest/views.py文件如下: from django.shortcuts import render from booktest.models import BookInfo#首頁,展…

前端模板預編譯技術

什么是前端模板預編譯 前端模板預編譯通過預編譯技術讓前端模板突破瀏覽器限制,實現后端模板一樣的同步“文件”加載能力。它采用目錄來組織維護前端模板,從而讓前端模板實現工程化管理,最終保證前端模板在復雜單頁 web 應用下的可維護性。同…

Python如何生成windows可執行的exe文件

打包工具 pyinstaller 安裝pyinstaller 如果你的網絡穩定,通常直接使用下面的命令安裝即可: pip install pyinstaller 當然了,你也可以下載pyinstaller源碼包,然后進入包目錄執行下面的命令,同樣可以安裝&#xff…

招商銀行信用卡中心華泰證券暑期實習軟開筆試小結

白菜自動化小碩一枚,18屆,下學期就正式要找工作了,沒有實習經驗,感覺心慌慌。現在學校里已經開始各種提前招實習,內推了,so暑假想提前試試水,投一投暑期實習。 看到心水的單位就投一投&#xff…

理想的程序猿

出處 | http://guoze.me 最近看到的一篇不錯的文章,分享一下。 我算是靠坑蒙拐騙進了程序員的門,然后一路狂奔。26歲之前幾乎沒有任何寫代碼的經驗,研究生畢業卻意外選擇了一家不可能提供培訓的初創公司,在每日擔憂公司倒閉、害…

node08-express

目錄:node01-創建服務器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-express node09-cookie express模塊: 1 /*2 * express是一個應用框架3 * 1、路由4 * 2、中間件5 * 3、模板引擎6 * */7 8 var express requ…

【python】1. 兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums [2, 7, 11, 15], t…

The user specified as a definer (#39;root#39;@#39;%#39;) does not exist

通常是因為root用戶對全局host無訪問權限。因此僅僅要給root用戶加入一個訪問權限就可以。解決的方法: 登陸mysql 。運行 mysql -u root -pPasswd mysql >grant all privileges on *.* to root"%" identified by "Passwd…

Java基礎常見筆試題總結

以下是自己總結的一些Java常見的基礎知識題,答案僅供參考,如有異議請指出。一直保持更新狀態。 1.什么是Java虛擬機?為什么Java被稱作是“平臺無關的編程語言”? Java虛擬機是一個可以執行Java字節碼的虛擬機進程。Java源文件被編…

ThreadLocal的練習代碼

場景: 有三個小孩兒,買了一個變形金剛玩具(Transformer).... 三個小孩都爭著玩這個玩具....沒有一個人可以玩... 第一種方式:每個人各玩一會.... 第二種方式:再買兩個玩具,一個人玩一個. 每個小孩都當成一個線程.三個小孩就有三個線程. Child.java 2 3 import java.util.Random…

nginx+uwsgi部署Django

本篇文章主要介紹了解決nginxuwsgi部署Django的所有問題(小結),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 最近,自己暑假寫的小項目也算完畢了,想著投放到自己云服務器上&#xff0…

$(document).scrollTop()與$(window).scrollTop()

$(document).scrollTop() 獲取垂直滾動的距離 即當前滾動的地方的窗口頂端到整個頁面頂端的距離 要獲取頂端 只需要獲取到scrollTop()0的時候 就是頂端了 要獲取底端 只要獲取$(document).scrollTop()>(document).height()?(window).height() 就可以知道已經…

各種機器學習開源項目精選TOP30

8800個機器學習開源項目為你精選TOP30! 授權自AI科技大本營(ID: rgznai100) 本文共圖文結合,建議閱讀5分鐘。 本文為大家帶來了30個廣受好評的機器學習開源項目。 最近,Mybridge發布了一篇文章,對比了過去一年中機…