溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop常見面試題有哪些

發(fā)布時間:2021-12-08 11:16:18 來源:億速云 閱讀:149 作者:小新 欄目:云計算

這篇文章將為大家詳細(xì)講解有關(guān)Hadoop常見面試題有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1 hadoop中配置文件有哪些,各自作用?

hadoop-env.sh 
    JAVA_HOME,HADOOP_CONF_DIR,HADOOP_LOG_DIR,HADOOP_PID_DIR,HADOOP_CLASSPATH,hadoop相關(guān)進(jìn)程JVM參數(shù)
    其他
core-site.xml
    fs.defaultFS,hadoop.tmp.dir,ha.zookeeper.quorum,io.compression.codecs,io.file.buffer.size
hdfs-site.xml
    namenode的url信息,dfs.name.dir,dfs.data.dir,dfs.replication,dfs.namenode.shared.edits.dir,
    dfs.journalnode.edits.dir,dfs.hosts.exclude
slaves 
    datanode列表
mapred-site.xml
    mapreduce.framework.name,mapreduce.map.output.compress.codec
yarn-site.xml
    resourcemanager信息
excludes
    排除節(jié)點列表

2 hdfs存儲機制是什么

1. HDFS開創(chuàng)性地設(shè)計出一套文件存儲方式,即對文件分割后分別存放;
2. HDFS將要存儲的大文件進(jìn)行分割,分割后存放在既定的存儲塊(Block)中,并通過預(yù)先設(shè)定的優(yōu)化處理,模式對存儲的數(shù)據(jù)進(jìn)行預(yù)處理,從而解決了大文件儲存與計算的需求;
3. 一個HDFS集群包括兩大部分,即NameNode與DataNode。一般來說,一個集群中會有一個NameNode和多個DataNode共同工作;
4. NameNode是集群的主服務(wù)器,主要是用于對HDFS中所有的文件及內(nèi)容數(shù)據(jù)進(jìn)行維護(hù),并不斷讀取記錄集群中DataNode主機情況與工作狀態(tài),并通過讀取與寫入鏡像日志文件的方式進(jìn)行存儲;
5. DataNode在HDFS集群中擔(dān)任任務(wù)具體執(zhí)行角色,是集群的工作節(jié)點。文件被分成若干個相同大小的數(shù)據(jù)塊,分別存儲在若干個DataNode上,DataNode會定期向集群內(nèi)NameNode發(fā)送自己的運行狀態(tài)與存儲內(nèi)容,并根據(jù)NameNode發(fā)送的指令進(jìn)行工作;
6. NameNode負(fù)責(zé)接受客戶端發(fā)送過來的信息,然后將文件存儲位置信息發(fā)送給提交請求的客戶端,由客戶端直接與DataNode進(jìn)行聯(lián)系,從而進(jìn)行部分文件的運算與操作。
7. Block是HDFS的基本存儲單元,默認(rèn)大小是64M(hadoop2中時128M);
8. HDFS還可以對已經(jīng)存儲的Block進(jìn)行多副本備份,將每個Block至少復(fù)制到3個相互獨立的硬件上,這樣可以快速恢復(fù)損壞的數(shù)據(jù);
9. 用戶可以使用既定的API接口對HDFS中的文件進(jìn)行操作;
10. 當(dāng)客戶端的讀取操作發(fā)生錯誤的時候,客戶端會向NameNode報告錯誤,并請求NameNode排除錯誤的DataNode后后重新根據(jù)距離排序,從而獲得一個新的DataNode的讀取路徑。如果所有的DataNode都報告讀取失敗,那么整個任務(wù)就讀取失?。?
11. 對于寫出操作過程中出現(xiàn)的問題,F(xiàn)SDataOutputStream并不會立即關(guān)閉。客戶端向NameNode報告錯誤信息,并直接向提供備份的DataNode中寫入數(shù)據(jù)。備份DataNode被升級為首選DataNode,并在其余2個DataNode中備份復(fù)制數(shù)據(jù)。NameNode對錯誤的DataNode進(jìn)行標(biāo)記以便后續(xù)對其進(jìn)行處理。

3 怎么查看,刪除,移動,拷貝hadoop文件

hdfs dfs -text ...
hdfs dfs -rm ...
hdfs dfs -mv ...
hdfs dfs -cp ...

4 hadoop中combiner作用

1、combiner類似本地的reduce功能.實現(xiàn)本地key的聚合,減清到reduce的io壓力

5 mr工作原理,距離說明mr是怎樣運行的

不確定是不是回答這個圖

Hadoop常見面試題有哪些

6 hive與oracle區(qū)別,目前hive不支持哪些函數(shù)(列出5個以上)

hive處理數(shù)據(jù)量較大,高延遲,基于hdfs,hql轉(zhuǎn)換成mr執(zhí)行,不支持?jǐn)?shù)據(jù)修改
oracle處理數(shù)據(jù)量相對較小,有所有,低延遲,支持?jǐn)?shù)據(jù)修改

7 hbase常用基本命令,創(chuàng)建表,添加記錄,查看記錄,刪除記錄

create '表名稱','列族名稱1','列名族稱2','列名族稱N'
put '表名','行名','列名','值'
get '表名','行名'
delete '表名','行名稱','列名稱'

8 見下圖 Hadoop常見面試題有哪些

//建表
create table net_info (device_number int,lac int,ci int,imei bigint,start_time timestamp,end_time timestamp,duration int,send_bytes int,recv_bytes int,total_bytes int)
row format delimited 
fields terminated by '|';
//加載數(shù)據(jù)
load data local inpath '/home/hadoop/text.txt' into table net_info;
select * from net_info;
//統(tǒng)計
select sum(total_bytes) from net_info where start_time>='2014-12-31' and end_time<'2015-1-1'
//順便復(fù)習(xí)下修改列
alter table net_info change start_time start_time timestamp;

9 編寫hive自定義函數(shù)實現(xiàn)oracle中addmonths函數(shù)功能,然后封裝到hive函數(shù)庫中。addmonths(data a,int b)函數(shù)功能簡單說明:求傳入日期a經(jīng)過b月后的日期是多少?

 Hive可以允許用戶編寫自己定義的函數(shù)UDF,來在查詢中使用。Hive中有3種UDF:
        1)UDF:操作單個數(shù)據(jù)行,產(chǎn)生單個數(shù)據(jù)行。
        2)UDAF:操作多個數(shù)據(jù)行,產(chǎn)生一個數(shù)據(jù)行。
        3)UDTF:操作一個數(shù)據(jù)行,產(chǎn)生多個數(shù)據(jù)行一個表作為輸出。
        用戶構(gòu)建的UDF使用過程如下:
        第一步:繼承UDF或者UDAF或者UDTF,實現(xiàn)特定的方法。
        第二步:將寫好的類打包為jar。如hivefirst.jar。
        第三步:進(jìn)入到Hive外殼環(huán)境中,利用add jar /home/hadoop/hivefirst.jar 注冊該jar文件。
該例實現(xiàn)網(wǎng)上找了個作參考:
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;

public class AddMonth extends GenericUDF {

    @Override
    public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
        if (arguments.length != 2) {
            throw new UDFArgumentLengthException("The function add_month(local_date, months_to_add) requires 2 arguments.");
        }

        ObjectInspector localDateVal = arguments[0];
        ObjectInspector monthsToAddVal = arguments[1];

        if (!(localDateVal instanceof StringObjectInspector)) {
            throw new UDFArgumentException("First argument must be of type String (local_date as String)");
        }
        if (!(monthsToAddVal instanceof IntObjectInspector)) {
            throw new UDFArgumentException("Second argument must be of type int (Month to add)");
        }
        return PrimitiveObjectInspectorFactory.writableStringObjectInspector;
    }

    @Override
    public Object evaluate(DeferredObject[] arguments) throws HiveException {
        String localDateVal = (String) ObjectInspectorUtils.copyToStandardJavaObject(arguments[0].get(),
                PrimitiveObjectInspectorFactory.javaStringObjectInspector);
        IntWritable monthsToAddVal = (IntWritable) ObjectInspectorUtils.copyToStandardJavaObject(arguments[1].get(),
                PrimitiveObjectInspectorFactory.javaIntObjectInspector);

        LocalDate localDate = null;
        try {
            localDate = LocalDate.parse(localDateVal, DateTimeFormat.forPattern("yyyy-MM-dd"));
        } catch (Exception ex) {
            return null;
        }

        return new Text(localDate.plusMonths(monthsToAddVal.get().toString());
    }

    @Override
    public String getDisplayString(String[] arguments) {
        assert (arguments.length == 2);
        return "add_month(" + arguments[0] + ", " + arguments[1] + ")";
    }
}

10 利用spark編寫搜索日志分析:用戶在0點-12點的搜索量。搜索路徑存放路徑為/input/data.txt。文件用豎線分割,第一列為時間字段。日志內(nèi)容如下:Hadoop常見面試題有哪些

關(guān)于“Hadoop常見面試題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI