Hadoop面試題 內(nèi)容參考_第1頁
Hadoop面試題 內(nèi)容參考_第2頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1.Hadoop集群可以運(yùn)行的3個(gè)模式?單機(jī)(本地)模式偽分布式模式全分布式模式2. 單機(jī)(本地)模式中的注意點(diǎn)?在單機(jī)模式(standalone)中不會存在守護(hù)進(jìn)程,所有東西都運(yùn)行在一個(gè)JVM上。這里同樣沒有DFS,使用的是本地文件系統(tǒng)。單機(jī)模式適用于開發(fā)過程中運(yùn)行MapReduce程序,這也是最少使用的一個(gè)模式。3. 偽分布模式中的注意點(diǎn)?偽分布式(Pseudo)適用于開發(fā)和測試環(huán)境,在這個(gè)模式中,所有守護(hù)進(jìn)程都在同一臺機(jī)器上運(yùn)行。4. VM是否可以稱為Pseudo?不是,兩個(gè)事物,同時(shí)Pseudo只針對Hadoop。5. 全分布模式又有什么注意點(diǎn)?全分布模式通常被用于生產(chǎn)環(huán)境,這里我們使用N臺主機(jī)組成一個(gè)Hadoop集群,Hadoop守護(hù)進(jìn)程運(yùn)行在每臺主機(jī)之上。這里會存在Namenode運(yùn)行的主機(jī),Datanode運(yùn)行的主機(jī),以及task tracker運(yùn)行的主機(jī)。在分布式環(huán)境下,主節(jié)點(diǎn)和從節(jié)點(diǎn)會分開。6. Hadoop是否遵循UNIX模式?是的,在UNIX用例下,Hadoop還擁有“conf”目錄。7. Hadoop安裝在什么目錄下?Cloudera和Apache使用相同的目錄結(jié)構(gòu),Hadoop被安裝在cd/usr/lib/hadoop-0.20/。8. Namenode、Job tracker和task tracker的端口號是?Namenode,70;Job tracker,30;Task tracker,60。9. Hadoop的核心配置是什么?Hadoop的核心配置通過兩個(gè)xml文件來完成:1,hadoop-default.xml;2,hadoop-site.xml。這些文件都使用xml格式,因此每個(gè)xml中都有一些屬性,包括名稱和值,但是當(dāng)下這些文件都已不復(fù)存在。10. 那當(dāng)下又該如何配置?Hadoop現(xiàn)在擁有3個(gè)配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。這些文件都保存在conf/子目錄下。11. RAM的溢出因子是?溢出因子(Spill factor)是臨時(shí)文件中儲存文件的大小,也就是Hadoop-temp目錄。12. fs.mapr.working.dir只是單一的目錄?fs.mapr.working.dir只是一個(gè)目錄。13. hdfs-site.xml的3個(gè)主要屬性?.dir決定的是元數(shù)據(jù)存儲的路徑以及DFS的存儲方式(磁盤或是遠(yuǎn)端)dfs.data.dir決定的是數(shù)據(jù)存儲的路徑fs.checkpoint.dir用于第二Namenode14. 如何退出輸入模式?退出輸入的方式有:1,按ESC;2,鍵入:q(如果你沒有輸入任何當(dāng)下)或者鍵入:wq(如果你已經(jīng)輸入當(dāng)下),并且按下Enter。15. 當(dāng)你輸入hadoopfsck /造成“connection refused java exception”時(shí),系統(tǒng)究竟發(fā)生了什么?這意味著Namenode沒有運(yùn)行在你的VM之上。16. 我們使用Ubuntu及Cloudera,那么我們該去哪里下載Hadoop,或者是默認(rèn)就與Ubuntu一起安裝?這個(gè)屬于Hadoop的默認(rèn)配置,你必須從Cloudera或者Edureka的dropbox下載,然后在你的系統(tǒng)上運(yùn)行。當(dāng)然,你也可以自己配置,但是你需要一個(gè)Linux box,Ubuntu或者是Red Hat。在Cloudera網(wǎng)站或者是Edureka的Dropbox中有安裝步驟。17. “jps”命令的用處?這個(gè)命令可以檢查Namenode、Datanode、Task Tracker、 Job Tracker是否正常工作。18. 如何重啟Namenode?點(diǎn)擊stop-all.sh,再點(diǎn)擊start-all.sh。鍵入sudo hdfs(Enter),su-hdfs (Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenode start(Enter)。19. Fsck的全名?全名是:File System Check。20. 如何檢查Namenode是否正常運(yùn)行?如果要檢查Namenode是否正常工作,使用命令/etc/init.d/hadoop-0.20-namenode status或者就是簡單的jps。21. mapred.job.tracker命令的作用?可以讓你知道哪個(gè)節(jié)點(diǎn)是Job Tracker。22. /etc /init.d命令的作用是?/etc /init.d說明了守護(hù)進(jìn)程(服務(wù))的位置或狀態(tài),其實(shí)是LINUX特性,和Hadoop關(guān)系不大。23. 如何在瀏覽器中查找Namenode?如果你確實(shí)需要在瀏覽器中查找Namenode,你不再需要localhost:8021,Namenode的端口號是50070。24. 如何從SU轉(zhuǎn)到Cloudera?從SU轉(zhuǎn)到Cloudera只需要鍵入exit。25. 啟動(dòng)和關(guān)閉命令會用到哪些文件?Slaves及Masters。26. Slaves由什么組成?Slaves由主機(jī)的列表組成,每臺1行,用于說明數(shù)據(jù)節(jié)點(diǎn)。27. Masters由什么組成?Masters同樣是主機(jī)的列表組成,每臺一行,用于說明第二Namenode服務(wù)器。28. hadoop-env.sh是用于做什么的?hadoop-env.sh提供了Hadoop中. JAVA_HOME的運(yùn)行環(huán)境。29. Master文件是否提供了多個(gè)入口?是的你可以擁有多個(gè)Master文件接口。30. Hadoop-env.sh文件當(dāng)下的位置?hadoop-env.sh現(xiàn)在位于conf。31. 在Hadoop_PID_DIR中,PID代表了什么?PID代表了“Process ID”。32. /var/hadoop/pids用于做什么?/var/hadoop/pids用來存儲PID。33. perties文件的作用是?perties被用做“Reporting”,控制Hadoop報(bào)告,初始狀態(tài)是“not to report”。34. Hadoop需求什么樣的網(wǎng)絡(luò)?Hadoop核心使用Shell(SSH)來驅(qū)動(dòng)從節(jié)點(diǎn)上的服務(wù)器進(jìn)程,并在主節(jié)點(diǎn)和從節(jié)點(diǎn)之間使用password-less SSH連接。35. 全分布式環(huán)境下為什么需求password-less SSH?這主要因?yàn)榧褐型ㄐ胚^于頻繁,Job Tracker需要盡可能快的給Task Tracker發(fā)布任務(wù)。36. 這會導(dǎo)致安全問題嗎?完全不用擔(dān)心。Hadoop集群是完全隔離的,通常情況下無法從互聯(lián)網(wǎng)進(jìn)行操作。與眾不同的配置,因此我們完全不需要在意這種級別的安全漏洞,比如說通過互聯(lián)網(wǎng)侵入等等。Hadoop為機(jī)器之間的連接提供了一個(gè)相對安全的方式。37. SSH工作的端口號是?SSH工作的端口號是NO.22,當(dāng)然可以通過它來配置,22是默認(rèn)的端口號。38. SSH中的注意點(diǎn)還包括?SSH只是個(gè)安全的shell通信,可以把它當(dāng)做NO.22上的一種協(xié)議,只需要配置一個(gè)密碼就可以安全的訪問。39. 為什么SSH本地主機(jī)需要密碼?在SSH中使用密碼主要是增加安全性,在某些情況下也根本不會設(shè)置密碼通信。40. 如果在SSH中添加key,是否還需要設(shè)置密碼?是的,即使在SSH中添加了key,還是需要設(shè)置密碼。41. 假如Namenode中沒有數(shù)據(jù)會怎么樣?沒有數(shù)據(jù)的Namenode就不能稱之為Namenode,通常情況下,Namenode肯定會有數(shù)據(jù)。42. 當(dāng)Job Tracker宕掉時(shí),Namenode會發(fā)生什么?當(dāng)Job Tracker失敗時(shí),集群仍然可以正常工作,只要Namenode沒問題。43. 是客戶端還是Namenode決定輸入的分片?這并不是客戶端決定的,在配置文件中以及決定分片細(xì)則。44. 是否可以自行搭建Hadoop集群?是的,只要對Hadoop環(huán)境足夠熟悉,你完全可以這么做。45. 是否可以在Windows上運(yùn)行Hadoop?你最好不要這么做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系統(tǒng)。在Hadoop安裝中,Windows通常不會被使用,因?yàn)闀霈F(xiàn)各種各樣的問題。因此,Windows絕對不是Hadoop的推薦系統(tǒng)。Hadoop就業(yè)面試寶典 1.0 簡要描述如何安裝配置apache的一個(gè)開源hadoop,只描述即可,無需列出具體步驟, 列出具體步驟更好。 答:1使用root賬戶登錄 2 修改IP 3 修改host主機(jī)名 4 配置SSH免密碼登錄 5 關(guān)閉防火墻 6 安裝JDK 7 解壓hadoop安裝包 8 配置hadoop的核心文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml 9 配置hadoop環(huán)境變量 10 格式化 hadoop namenode-format 11 啟動(dòng)節(jié)點(diǎn) start-all.sh 2.0 請;列出正常的hadoop集群中hadoop都分別需要啟動(dòng) 哪些進(jìn)程,他們的作用分別都是什么,請盡量列的詳細(xì)一些。 答:namenode:管理集群,存儲數(shù)據(jù)的原信息,并管理記錄datanode中的文件信息。 Secondname:可以做冷備,對一定范圍內(nèi)數(shù)據(jù)做快照性備份。 Datanode:存儲數(shù)據(jù) Jobtracker :管理任務(wù),并將任務(wù)分配給 tasktracker。 Tasktracker: 執(zhí)行JobTracker分配的任務(wù)。 3.0請寫出以下的shell命令 (1)殺死一個(gè)job (2)刪除hdfs上的 /tmp/aaa目錄 (3) 加入一個(gè)新的存儲節(jié)點(diǎn)和刪除一個(gè)節(jié)點(diǎn)需要執(zhí)行的命令 答:(1)hadoop job list 得到j(luò)ob的id,然后執(zhí) 行 hadoop job -kill jobId就可以殺死一個(gè)指定jobId的job工作了。 (2)hadoop fs -rmr /tmp/aaa (3) 增加一個(gè)新的節(jié)點(diǎn)在新的幾點(diǎn)上執(zhí)行 Hadoop daemon.sh start datanode Hadooop daemon.sh start tasktracker 然后在主節(jié)點(diǎn)中執(zhí)行 hadoop dfsadmin -refreshnodes 刪除一個(gè)節(jié)點(diǎn)的時(shí)候,只需要在主節(jié)點(diǎn)執(zhí)行 hadoop mradmin -refreshnodes 4.0 請列出你所知道的hadoop調(diào)度器,并簡要說明其工作方法 答:Fifo schedular :默認(rèn),先進(jìn)先出的原則 Capacity schedular :計(jì)算能力調(diào)度器,選擇占用最小、優(yōu)先級高的先執(zhí)行,依此類推。 Fair schedular:公平調(diào)度,所有的 job 具有相同的資源。 5.0 請列出你在工作中使用過的開發(fā)mapreduce的語言 答:java,hive 6.0 當(dāng)前日志采樣格式為 a , b , c , d b , b , f , e a , a , c , f 請你用最熟悉的語言編寫mapreduce,計(jì)算第四列每個(gè)元素出現(xiàn)的個(gè)數(shù) Static final String 答: public class WordCount1 public static final String INPUT_PATH = hdfs:/hadoop0:9000/in; public static final String OUT_PATH = hdfs:/hadoop0:9000/out; public static void main(String args) throws Exception Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(conf); if(fileSystem.exists(new Path(OUT_PATH) fileSystem.delete(new Path(OUT_PATH),true); Job job = new Job(conf,WordCount1.class.getSimpleName(); /1.0讀取文件,解析成key,value對 FileInputFormat.setInputPaths(job,new Path(INPUT_PATH); /2.0寫上自己的邏輯,對輸入的可以,value進(jìn)行處理,轉(zhuǎn)換成新的key,value對進(jìn)行輸出 job.setMapperClass(MyMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); /3.0對輸出后的數(shù)據(jù)進(jìn)行分區(qū) /4.0對分區(qū)后的數(shù)據(jù)進(jìn)行排序,分組,相同key的value放到一個(gè)集合中 /5.0對分組后的數(shù)據(jù)進(jìn)行規(guī)約 /6.0對通過網(wǎng)絡(luò)將map輸出的數(shù)據(jù)拷貝到reduce節(jié)點(diǎn) /7.0 寫上自己的reduce函數(shù)邏輯,對map輸出的數(shù)據(jù)進(jìn)行處理 job.setReducerClass(MyReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); FileOutputFormat.setOutputPath(job, new Path(OUT_PATH); job.waitForCompletion(true); static class MyMapper extends Mapper Override protected void map(LongWritable k1, Text v1, org.apache.hadoop.mapreduce.Mapper.Context context) throws IOException, InterruptedException String split = v1.toString().split(t); for(String words :split) context.write(split3, 1); static class MyReducer extends Reducer protected void reduce(Text k2, Iterable v2, org.apache.hadoop.mapreduce.Reducer.Context context) throws IOException, InterruptedException Long count = 0L; for(LongWritable time : v2) count += time.get(); context.write(v2, new LongWritable(count); 7.0 你認(rèn)為用java , streaming , pipe方式開發(fā)map/reduce , 各有哪些優(yōu)點(diǎn) 就用過 java 和 hiveQL。 Java 寫 mapreduce 可以實(shí)現(xiàn)復(fù)雜的邏輯,如果需求簡單,則顯得繁瑣。 HiveQL 基本都是針對 hive 中的表數(shù)據(jù)進(jìn)行編寫,但對復(fù)雜的邏輯很難進(jìn)行實(shí)現(xiàn)。寫 起來簡單。 8.0 hive有哪些方式保存元數(shù)據(jù),各有哪些優(yōu)點(diǎn) 三種:內(nèi)存數(shù)據(jù)庫 derby,挺小,不常用 。 本地 mysql。常用 遠(yuǎn)程端 mysql。不常用 上網(wǎng)上找了下專業(yè)名稱:single user mode.multi user mode.remote user mode 9.0 請簡述hadoop怎樣實(shí)現(xiàn)二級排序 第一種方法是,Reducer將給定key的所有值都緩存起來,然后對它們再做一個(gè)Reducer內(nèi)排序。但是,由于Reducer需要保存給定key的所有值,可能會導(dǎo)致出現(xiàn)內(nèi)存耗盡的錯(cuò)誤。 第二種方法是,將值的一部分或整個(gè)值加入原始key,生成一個(gè)合成key。這兩種方法各有優(yōu)勢,第一種方法可能會更快一些(但有內(nèi)存耗盡的危險(xiǎn)),第二種方法則是將排序的任務(wù)交給MapReduce框架,更符合Hadoop/Reduce的設(shè)計(jì)思想。這篇文章里選擇的是第二種。我們將編寫一個(gè)Partitioner,確保擁有相同key(原始key,不包括添加的部分)的所有數(shù)據(jù)被發(fā)往同一個(gè)Reducer,還將編寫一個(gè)Comparator,以便數(shù)據(jù)到達(dá)Reducer后即按原始key分組。 10.簡述hadoop實(shí)現(xiàn)jion的幾種方法 利用dataJoin來實(shí)現(xiàn)mapreduce的jion問題。 11.0 請用java實(shí)現(xiàn)非遞歸二分查詢 1. public class BinarySearchClass 2. 3. 4. public static int binary_search(int array, int value) 5. 6. int beginIndex = 0;/ 低位下標(biāo) 7. int endIndex = array.length - 1;/ 高位下標(biāo) 8. int midIndex = -1; 9. while (beginIndex = endIndex) 10. midIndex = beginIndex + (endIndex - beginIndex) / 2;/防止溢出 11. if (value = arraymidIndex) 12. return midIndex; 13. else if (value TextInputFormat - RecordReader - LineRecordReader - LineReader 5、 參考下列M/R系統(tǒng)的場景:hdfs塊大小為64MB,輸入類為FileInputFormat,有3個(gè)文件的大小分別為64KB, 65MB, 127MB Hadoop框架會把這些文件拆分為多少塊? 5塊 6、 hadoop中RecordReader的作用是什么? RecorderReader是一個(gè)接口,主要是用來讀取文件的輸入鍵值對的,我們也可以自定義輸入的key,value對的讀取規(guī)則 7、 Map階段結(jié)束后,Hadoop框架會處理:Partitioning, Shuffle和Sort,在這個(gè)階段都發(fā)生了什么? Partition是對輸出的key,value進(jìn)行分區(qū),可以自定義分區(qū),按照業(yè)務(wù)需求,將map的輸出歸分到多個(gè)不同的文件中 將map的輸出作為輸入傳給reducer 稱為shuffle sort是排序的過程,將map的輸出,作為reduce的輸入之前,我們可以自定義排序,按照key來對map的輸出進(jìn)行排序 8、 如果沒有定義partitioner,那數(shù)據(jù)在被送達(dá)reducer前是如何被分區(qū)的? hadoop有一個(gè)默認(rèn)的分區(qū)類,HashPartioer類,通過對輸入的k2去hash值來確認(rèn)map輸出的k2,v2送到哪一個(gè)reduce中去執(zhí)行。 9、 什么是combiner? combiner就是規(guī)約操作,通過對map輸出的數(shù)量進(jìn)行規(guī)約,可以減少reduce的數(shù)量,提高執(zhí)行效率 combiner的輸入輸出類型必須和mapper的輸出以及reducer的輸入類型一致 10、分別舉例什么情況要使用 combiner,什么情況不使用? 求平均數(shù)的時(shí)候就不需要用combiner,因?yàn)椴粫p少reduce執(zhí)行數(shù)量。在其他的時(shí)候,可以依據(jù)情況,使用combiner, 來減少map的輸出數(shù)量,減少拷貝到reduce的文件,從而減輕reduce的壓力,節(jié)省網(wǎng)絡(luò)開銷,提升執(zhí)行效率 11、Hadoop中job和tasks之間的區(qū)別是什么? 首先通過jobTracker接收到了用戶的操作請求之后,就會產(chǎn)生job任務(wù),job然后將任務(wù)分配給tasks分配給多個(gè)機(jī)器去并行的 執(zhí)行,通過將job任務(wù)分解為多個(gè)tasks任務(wù)并行的執(zhí)行,提高了執(zhí)行的效率。 12、hadoop中通過拆分任務(wù)到多個(gè)節(jié)點(diǎn)運(yùn)行來實(shí)現(xiàn)并行計(jì)算,但某些節(jié)點(diǎn)運(yùn)行較慢會拖慢整個(gè)任務(wù)的運(yùn)行,hadoop采用全程機(jī)制應(yīng)對這個(gè)情況? 對于那些較慢的tasks任務(wù),hadoop 13、流API中的什么特性帶來可以使map/reduce任務(wù)可以以不同語言(如perl, ruby, awk等)實(shí)現(xiàn)的靈活性? 14、有可能使hadoop任務(wù)輸出到多個(gè)目錄中嗎?如果可以,怎么做? 可以,hadoop 15、如何為一個(gè)hadoop任務(wù)設(shè)置mappers的數(shù)量? 1 map的數(shù)量 map的數(shù)量通常是由hadoop集群的DFS塊大小確定的,也就是輸入文件的總塊數(shù),正常的map數(shù)量的并行規(guī)模大致是每一個(gè)Node是10100個(gè),對于CPU消耗較小的作業(yè)可以設(shè)置Map數(shù)量為300個(gè)左右,但是由于hadoop的沒一個(gè)任務(wù)在初始化時(shí)需要一定的時(shí)間,因此比較合理的情況是每個(gè)map執(zhí)行的時(shí)間至少超過1分鐘。具體的數(shù)據(jù)分片是這樣的,InputFormat在默認(rèn)情況下會根據(jù)hadoop集群的DFS塊大小進(jìn)行分片,每一個(gè)分片會由一個(gè)map任務(wù)來進(jìn)行處理,當(dāng)然用戶還是可以通過參數(shù)mapred.min.split.size參數(shù)在作業(yè)提交客戶端進(jìn)行自定義設(shè)置。還有一個(gè)重要參數(shù)就是mapred.map.tasks,這個(gè)參數(shù)設(shè)置的map數(shù)量僅僅是一個(gè)提示,只有當(dāng)InputFormat 決定了map任務(wù)的個(gè)數(shù)比mapred.map.tasks值小時(shí)才起作用。同樣,Map任務(wù)的個(gè)數(shù)也能通過使用JobConf 的conf.setNumMapTasks(int num)方法來手動(dòng)地設(shè)置。這個(gè)方法能夠用來增加map任務(wù)的個(gè)數(shù),但是不能設(shè)定任務(wù)的個(gè)數(shù)小于Hadoop系統(tǒng)通過分割輸入數(shù)據(jù)得到的值。當(dāng)然為了提高集群的并發(fā)效率,可以設(shè)置一個(gè)默認(rèn)的map數(shù)量,當(dāng)用戶的map數(shù)量較小或者比本身自動(dòng)分割的值還小時(shí)可以使用一個(gè)相對交大的默認(rèn)值,從而提高整體hadoop集群的效率。 16、如何為一個(gè)hadoop任務(wù)設(shè)置要?jiǎng)?chuàng)建reduder的數(shù)量? 2 reduece的數(shù)量 reduce在運(yùn)行時(shí)往往需要從相關(guān)map端復(fù)制數(shù)據(jù)到reduce節(jié)點(diǎn)來處理,因此相比于map任務(wù)。reduce節(jié)點(diǎn)資源是相對比較缺少的,同時(shí)相對運(yùn)行較慢,正確的reduce任務(wù)的個(gè)數(shù)應(yīng)該是0.95或者1.75 *(節(jié)點(diǎn)數(shù) mapred.tasktracker.tasks.maximum參數(shù)值)。如果任務(wù)數(shù)是節(jié)點(diǎn)個(gè)數(shù)的0.95倍,那么所有的reduce任務(wù)能夠在 map任務(wù)的輸出傳輸結(jié)束后同時(shí)開始運(yùn)行。如果任務(wù)數(shù)是節(jié)點(diǎn)個(gè)數(shù)的1.75倍,那么高速的節(jié)點(diǎn)會在完成他們第一批reduce任務(wù)計(jì)算之后開始計(jì)算第二批 reduce任務(wù),這樣的情況更有利于負(fù)載均衡。同時(shí)需要注意增加reduce的數(shù)量雖然會增加系統(tǒng)的資源開銷,但是可以改善負(fù)載勻衡,降低任務(wù)失敗帶來的負(fù)面影響。同樣,Reduce任務(wù)也能夠與 map任務(wù)一樣,通過設(shè)定JobConf 的conf.setNumReduceTasks(int num)方法來增加任務(wù)個(gè)數(shù)。 xxx信息技術(shù)有限公司 1、你們的集群規(guī)模? 開發(fā)集群:10臺(8臺可用)8核cpu 2、你們的數(shù)據(jù)是用什么導(dǎo)入到數(shù)據(jù)庫的?導(dǎo)入到什么數(shù)據(jù)庫? 處理之前的導(dǎo)入:通過hadoop命令導(dǎo)入到hdfs文件系統(tǒng) 處理完成之后的導(dǎo)出:利用hive處理完成之后的數(shù)據(jù),通過sqoop導(dǎo)出到mysql數(shù)據(jù)庫中,以供報(bào)表層使用 3、你們業(yè)務(wù)數(shù)據(jù)量多大?有多少行數(shù)據(jù)?(面試了三家,都問這個(gè)問題) 開發(fā)時(shí)使用的是部分?jǐn)?shù)據(jù),不是全量數(shù)據(jù),有將近一億行(8、9千萬,具體不詳,一般開發(fā)中也沒人會特別關(guān)心這個(gè)問題) 4、你們處理數(shù)據(jù)是直接讀數(shù)據(jù)庫的數(shù)據(jù)還是讀文本數(shù)據(jù)? 將日志數(shù)據(jù)導(dǎo)入到hdfs之后進(jìn)行處理 5、你們寫hive的hql語句,大概有多少條? 不清楚,我自己寫的時(shí)候也沒有做過統(tǒng)計(jì) 6、你們提交的job任務(wù)大概有多少個(gè)?這些job執(zhí)行完大概用多少時(shí)間?(面試了三家,都問這個(gè)問題) 沒統(tǒng)計(jì)過,加上測試的,會與很多 7、hive跟hbase的區(qū)別是? 這個(gè)可以百度 8、你在項(xiàng)目中主要的工作任務(wù)是? 利用hive分析數(shù)據(jù) 9、你在項(xiàng)目中遇到了哪些難題,是怎么解決的? 某些任務(wù)執(zhí)行時(shí)間過長,且失敗率過高,檢查日志后發(fā)現(xiàn)沒有執(zhí)行完就失敗,原因出在hadoop的job的timeout過短(相對于集群的能力來說),設(shè)置長一點(diǎn)即可 10、你自己寫過udf函數(shù)么?寫了哪些? 這個(gè)我沒有寫過 11、你的項(xiàng)目提交到j(luò)ob的時(shí)候數(shù)據(jù)量有多大?(面試了三家,都問這個(gè)問題) 不清楚是要問什么 12、reduce后輸出的數(shù)據(jù)量有多大? 不清楚 1.一個(gè)網(wǎng)絡(luò)商城1天大概產(chǎn)生多少G的日志? 2.大概有多少條日志記錄(在不清洗的情況下)? 3.日訪問量大概有多少個(gè)? 4.注冊數(shù)大概多少? 5.我們的日志是不是除了apache的訪問日志是不是還有其他的日志? 6.假設(shè)我們有其他的日志是不是可以對這個(gè)日志有其他的業(yè)務(wù)分析?這些業(yè)務(wù)分析都有什么(*) 1.問:你們的服務(wù)器有多少臺? 2.問:你們服務(wù)器的內(nèi)存多大? 3.問:你們的服務(wù)器怎么分布的?(這里說地理位置分布,最好也從機(jī)架方面也談?wù)劊?4.問:你平常在公司都干些什么(一些建議) 下面是HBASE我非常不懂的地方: 1.hbase怎么預(yù)分區(qū)? 2.hbase怎么給web前臺提供接口來訪問(HTABLE可以提供對HTABLE的訪問,但是怎么查詢同一條記錄的多個(gè)版本數(shù)據(jù))? 3.htable API有沒有線程安全問題,在程序中是單例還是多例? 4.我們的hbase大概在公司業(yè)務(wù)中(主要是網(wǎng)上商城)大概都幾個(gè)表,幾個(gè)表簇,大概都存什么樣的數(shù)據(jù)? 5.hbase的并發(fā)問題? 1、將現(xiàn)有邏輯在Spark上面實(shí)現(xiàn)。2、數(shù)據(jù)傾斜怎么處理? 數(shù)據(jù)傾斜有很多解決方案,本例子簡要介紹一種實(shí)現(xiàn)方式,假設(shè)表A 和表B連接,表A 數(shù)據(jù)傾斜,只有一個(gè)key傾斜,首先對A進(jìn)行采樣,統(tǒng)計(jì)出最傾斜的key,將A 表分隔為A1 只有傾斜 key, A2 不包含傾斜key, 然后分別與 表B 連接。 最后將結(jié)果合并, union3 、各完成一個(gè)awk和sed的例子,最簡單的應(yīng)用即可,并說明。 cat /etc/passwd |awk -F : print $1 讀取文件,指定文本分隔符,然后打印第一個(gè)域 cat test.sh | sed 2,50d 讀取文件的每一行,然后對每一行進(jìn)行處理后打印在控制臺, 有很多模式,很多方法。還可以直接修改文件4、簡要描述你知道的數(shù)據(jù)挖掘算法和使用場景(一)基于分類模型的案例 ( 1)垃圾郵件的判別 通常會采用樸素貝葉斯的方法進(jìn)行判別 (2)醫(yī)學(xué)上的腫瘤判斷 通過分類模型識別 (二)基于預(yù)測模型的案例 (1)紅酒品質(zhì)的判斷 分類回歸樹模型進(jìn)行預(yù)測和判斷紅酒的品質(zhì) ( 2)搜索引擎的搜索量和股價(jià)波動(dòng)(三)基于關(guān)聯(lián)分析的案例:沃爾瑪?shù)钠【颇虿迹ㄋ模┗诰垲惙治龅陌咐毫闶劭蛻艏?xì)分(五)基于異常值分析的案例:支付中的交易欺詐偵測(六)基于協(xié)同過濾的案例:電商猜你喜歡和推薦引擎(七)基于社會網(wǎng)絡(luò)分析的案例:電信中的種子客戶(八)基于文本分析的案例(1)字符識別:掃描王APP(2)文學(xué)著作與統(tǒng)計(jì):紅樓夢歸屬5、列舉你知道的常用的Hadoop管理和監(jiān)控的命令、比如hdfs dfs -mkdir /usr -ls -cat -text -cp -put -chmod -chown -du -get -copyFromLocal -copyToLocal -mv -rm - tail -chgrp6、評述hadoop運(yùn)行原理 站在高處,大的方面講解 1、有hdfs 負(fù)責(zé)數(shù)據(jù)存放 是Hadoop的分布式文件存儲系統(tǒng)將大文件分解為多個(gè)Block,每個(gè)Block保存多個(gè)副本。提供容錯(cuò)機(jī)制,副本丟失或者宕機(jī)時(shí)自動(dòng)恢復(fù)。默認(rèn)每個(gè)Block保存3個(gè)副本,64M為1個(gè)Block。將Block按照key-value映射到內(nèi)存當(dāng)中。 2、有mapreduce負(fù)責(zé)計(jì)算,Map(映射)和Reduce(歸約) 7、講述mapreduce的原理ApplicationMaster 是一個(gè)詳細(xì)的框架庫,它結(jié)合從 ResourceManager 獲得的資源和 NodeManager 協(xié)同工作來運(yùn)行和監(jiān)控任務(wù)。ResourceManager 支持分層級的應(yīng)用隊(duì)列,這些隊(duì)列享有集群一定比例的資源。從某種意義上講它就是一個(gè)純粹的調(diào)度器,ApplicationMaster 的職責(zé)有:向調(diào)度器索要適當(dāng)?shù)馁Y源容器,運(yùn)行任務(wù),跟蹤應(yīng)用程序的狀態(tài)和監(jiān)控它們的進(jìn)程,處理任務(wù)的失敗原因。輸入分片(input split)map階段:combiner階段:8、JVM&垃圾回收機(jī)制三個(gè)代:年輕代(Young Generation)、年老代(Old Generation)和持久代(Permanent Generation)。9、找出公共好友:/lucius/p/3483494.html/thread-18826-1-1.html 原理:A 有好友 B ,C,D F 有好友 D E F 其實(shí)A 的好友也是他好友的好友 其實(shí)F 的好友也是他的好友的好友 那么D 的共同好友就是 A F 10、combiner作用 Combiner最基本是實(shí)現(xiàn)本地key的聚合,對map輸出的key排序、value進(jìn)行迭代。 Combiner還有本地reduce功能(其本質(zhì)上就是一個(gè)reduce): 使用Combiner先完成在map端的本地聚合,可以減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量,提高性能。 平均數(shù)的歸約算法不能多次調(diào)用。11、在mr環(huán)節(jié)中,那些環(huán)節(jié)需要優(yōu)化,如何優(yōu)化,請?jiān)敿?xì)說明。 1、 setNumReduceTasks 適當(dāng)?shù)脑O(shè)置reduce的數(shù)量,如果數(shù)據(jù)量比較大,那么可以增加reduce的數(shù)量 2、適當(dāng)?shù)臅r(shí)候使用 combine 函數(shù),減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量 3、壓縮map和reduce的輸出數(shù)據(jù) 4、使用SequenceFile二進(jìn)制文件。 5、通過application 的ui頁面觀察job的運(yùn)行參數(shù) 6、太多小文件,造成map任務(wù)過多的問題,應(yīng)該可以先合并小文件,或者有一個(gè)特定的map作為處理小文件的輸入 7、map端效率低原因分析源文件的大小遠(yuǎn)小于HDFS的塊的大小。這意味著任務(wù)的開啟和停止要耗費(fèi)更多的時(shí)間,就沒有足夠的時(shí)間來讀取并處理輸入數(shù)據(jù)。源文件無法分塊。這導(dǎo)致需要通過網(wǎng)絡(luò)IO從其他節(jié)點(diǎn)讀取文件塊。一個(gè)節(jié)點(diǎn)的本地磁盤或磁盤控制器運(yùn)行在降級模式中,讀取寫入性能都很差。這會影響某個(gè)節(jié)點(diǎn),而不是全部節(jié)點(diǎn)。源文件不來自于HDFS。則可能是Hadoop節(jié)點(diǎn)和數(shù)據(jù)源之間的延遲導(dǎo)致了性能低下。Map任務(wù)從其他數(shù)據(jù)節(jié)點(diǎn)讀取數(shù)據(jù)??梢詮腏obTracker的map任務(wù)細(xì)節(jié)信息和任務(wù)運(yùn)行嘗試中找到輸入塊的位置。如果輸入塊的位置不是任務(wù)執(zhí)行的節(jié)點(diǎn),那就不是本地?cái)?shù)據(jù)了。技術(shù)33 Reduce實(shí)例不足或過多技術(shù)34 診斷reduce段的數(shù)據(jù)傾斜的問題技術(shù)35 確定reduce任務(wù)是否存在整體吞吐量過低技術(shù)36 緩慢的洗牌(shuffle)和排序技術(shù)37 作業(yè)競爭和調(diào)度器限制1.查找硬件的失效CPU競爭3 內(nèi)存交換4 磁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論