柚子快報(bào)激活碼778899分享:大數(shù)據(jù)復(fù)習(xí)練習(xí)
柚子快報(bào)激活碼778899分享:大數(shù)據(jù)復(fù)習(xí)練習(xí)
大數(shù)據(jù)復(fù)習(xí)練習(xí)題
填空題簡(jiǎn)答題簡(jiǎn)單分析題程序設(shè)計(jì)題程序設(shè)計(jì)題
填空題
(數(shù)據(jù))過觀察、實(shí)驗(yàn)或計(jì)算得出的結(jié)果。(消息)是較為宏觀的概念,它是由數(shù)據(jù)的有序排列組合而成。大數(shù)據(jù)的數(shù)據(jù)類型包括(結(jié)構(gòu)化數(shù)據(jù))和(非結(jié)構(gòu)化數(shù)據(jù)),前者占10%左右,后者占90%左右。HDFS偽分布式配置中屬性dfs.replication的值應(yīng)該設(shè)置為(1)DFS的數(shù)據(jù)復(fù)制采用了(流水線復(fù)制)的策略為了解決單點(diǎn)故障問題,HDFS2.0采用了(高可用)結(jié)構(gòu)。Base中需要根據(jù)表的行鍵的值對(duì)表進(jìn)行分區(qū),每個(gè)行區(qū)間構(gòu)成一個(gè)分區(qū),被稱為(Region)(云計(jì)算)數(shù)據(jù)提供了技術(shù)基礎(chǔ),(物聯(lián)網(wǎng))是大數(shù)據(jù)重要的數(shù)據(jù)來源。在每個(gè)Region服務(wù)器上只有的是(HLog)ARN中的(ApplicationMaster)負(fù)責(zé)執(zhí)行以下任務(wù):為應(yīng)用程序申請(qǐng)資源,并分配給內(nèi)部任務(wù);任務(wù)調(diào)度、監(jiān)控與容錯(cuò)。
簡(jiǎn)答題
在Hadoop偽分布式安裝后,執(zhí)行Start-dfs.sh命令,會(huì)啟動(dòng)哪幾個(gè)線程?每個(gè)線程分別有什么作用?
NameNode:hadoop中的主服務(wù)器,管理文件系統(tǒng)名稱空間和對(duì)集群中存儲(chǔ)的文件的訪問,保存有元數(shù)據(jù)。SecondaryNameNode:提供周期檢查點(diǎn)和清理任務(wù)。DataNode:負(fù)責(zé)管理連接到節(jié)點(diǎn)的存儲(chǔ)。每個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)運(yùn)行一個(gè)datanode守護(hù)進(jìn)程。
Zookeeper在HBase中有哪些作用?
協(xié)調(diào)服務(wù):管理HBase集群中各個(gè)節(jié)點(diǎn)的狀態(tài)信息,協(xié)調(diào)各個(gè)節(jié)點(diǎn)之間的通信和協(xié)作,確保各個(gè)節(jié)點(diǎn)之間的一致性和可靠性。元數(shù)據(jù)管理:HBase的元數(shù)據(jù)信息存儲(chǔ)在ZooKeeper中,HBase可以通過ZooKeeper來獲取和維護(hù)元數(shù)據(jù)信息。選主機(jī)制:HBase集群的Master節(jié)點(diǎn)是由ZooKeeper進(jìn)行選舉產(chǎn)生的,ZooKeeper會(huì)負(fù)責(zé)監(jiān)控Master節(jié)點(diǎn)的狀態(tài),并在Master節(jié)點(diǎn)發(fā)生故障時(shí)進(jìn)行重新選舉。
保存 Meta 表位置、記錄并監(jiān)聽 Master 主備狀態(tài)
百度云數(shù)據(jù)庫支持關(guān)系型數(shù)據(jù)庫MySQL,分布式非關(guān)系型數(shù)據(jù)庫存儲(chǔ)服務(wù)MongoDB、鍵值型非關(guān)系型數(shù)據(jù)庫Redis,請(qǐng)分別說明這三種數(shù)據(jù)庫是如何運(yùn)用CAP理論的?
CAP是一致性(Consistency)、可用性(Availability)和分區(qū)容錯(cuò)性(Partition Tolerance)。
MySQL(關(guān)系型數(shù)據(jù)庫)
MySQL單機(jī)部署時(shí),MySQL可以保證一致性和可用性,不涉及分區(qū)容錯(cuò)性。集群部署,MySQL傾向于保證一致性和可用性,犧牲一定的分區(qū)容錯(cuò)性。 MongoDB(分布式非關(guān)系型數(shù)據(jù)庫)
MongoDB默認(rèn)設(shè)計(jì)為滿足CAP理論中的AP(可用性和分區(qū)容錯(cuò)性)。MongoDB通過副本集來保證高可用性,副本集中的每個(gè)節(jié)點(diǎn)都可以處理讀取請(qǐng)求,即使某些節(jié)點(diǎn)之間通信出現(xiàn)問題(分區(qū)),系統(tǒng)仍然可以繼續(xù)運(yùn)行。 Redis(鍵值型非關(guān)系型數(shù)據(jù)庫)
Redis可以為單機(jī)或主從復(fù)制模式。在單實(shí)例中,Redis同時(shí)保證一致性和可用性。在集群模式下,Redis傾向于保證AP(可用性和分區(qū)容錯(cuò)性)。
簡(jiǎn)單分析題
請(qǐng)分別對(duì)下面的命令進(jìn)行解釋
hdfs dfs -ls /
列出HDFS根目錄下的所有文件和目錄。 hdfs dfs -mkdir -p /tmp/test_hdfs
在HDFS中創(chuàng)建目錄。-p 參數(shù)允許創(chuàng)建多級(jí)目錄,如果父目錄不存在則會(huì)一并創(chuàng)建。在 /tmp 下創(chuàng)建名為 test_hdfs 的目錄 hdfs dfs -put testfile.zip /tmp/test_hdfs
將本地文件系統(tǒng)中的 testfile.zip 文件上傳到HDFS的 /tmp/test_hdfs 目錄下。 create ‘exam_info’, ‘info’
HBase shell命令,創(chuàng)建一個(gè)名為 exam_info 的表,并定義一個(gè)名為 info 的列族。 put ‘exam_info’, ‘123001’, ‘info:name’, ‘Elle’
HBase shell命令,向 exam_info 表中插入數(shù)據(jù)。將 123001 作為行鍵,info:name 作為列名,Elle 作為該列的值。 get ‘exam_info’, ‘123001’, ‘info:name’
從 exam_info 表中檢索數(shù)據(jù)。獲取行鍵為 123001 的記錄中,列名為 info:name 的值。 scan ‘exam_info’, {COLUMNS => ‘info:name’}
掃描 exam_info 表,只返回列族 info 中列名為 name 的數(shù)據(jù)。 delete all ‘exam_info’, ‘123001’
刪除 exam_info 表中行鍵為 123001 的所有數(shù)據(jù)。 HDFS代碼命令解釋題目 FileSystem fs = FileSystem.get(new URI("hdfs://192.168.1.2:9000"), new Configuration(), "root");
fs.deleteOnExit("/java");
獲取HDFS文件系統(tǒng)的實(shí)例,指定HDFS的URI和配置。deleteOnExit 方法,標(biāo)記文件系統(tǒng)中的 /java 目錄,在JVM退出時(shí)自動(dòng)刪除該目錄。 Hbase命令解釋題 Configuration configuration = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(configuration);
Table table = connection.getTable(TableName.valueOf("student"));
Put put = new Put("2022001".getBytes());
put.addColumn("info".getBytes(), "name".getBytes(), "Kate".getBytes());
table.put(put);
table.close();
首先創(chuàng)建一個(gè)HBase配置對(duì)象,然后創(chuàng)建一個(gè)HBase連接。接著,它獲取一個(gè) student 的表的實(shí)例,創(chuàng)建一個(gè) Put 對(duì)象來插入數(shù)據(jù),指定行鍵為 2022001,列族為 info,列名為 name,值為 Kate。最后,將這個(gè) Put 對(duì)象通過 table.put() 方法插入到表中,并關(guān)閉表連接。
程序設(shè)計(jì)題
公司為購物平臺(tái),業(yè)務(wù)量非常龐大,現(xiàn)在需要為一個(gè)公司建立大數(shù)據(jù)平臺(tái),全面支持公司業(yè)務(wù),需提供以下業(yè)務(wù):實(shí)時(shí)的訂單處理,時(shí)間跨度在數(shù)百毫秒到數(shù)秒之間;基于歷史訂單的查詢,時(shí)間跨度在數(shù)分鐘之間;對(duì)于平臺(tái)各種數(shù)據(jù)的批處理分析,提供較復(fù)雜的業(yè)務(wù),時(shí)間跨度在數(shù)小時(shí)之間。請(qǐng)結(jié)合所學(xué)的知識(shí),提供一個(gè)該大數(shù)據(jù)平臺(tái)的設(shè)計(jì)方案,請(qǐng)從數(shù)據(jù)庫選擇,數(shù)據(jù)采集開始設(shè)計(jì),畫出該平臺(tái)的層次結(jié)構(gòu)圖,并說明每層有什么作用,采用什么工具或技術(shù)。
數(shù)據(jù)庫選擇
實(shí)時(shí)訂單處理:使用Kafka和Flink,因?yàn)樗鼈冎С指咄掏铝康膶?shí)時(shí)數(shù)據(jù)流處理。歷史訂單查詢:使用HBase,分布式的、可擴(kuò)展的大數(shù)據(jù)存儲(chǔ)系統(tǒng),適合隨機(jī)、實(shí)時(shí)讀寫訪問模式。批處理分析:使用Hadoop和Hive,適合處理大規(guī)模數(shù)據(jù)集的批處理任務(wù)。
數(shù)據(jù)采集
使用Flume或Logstash進(jìn)行日志和事件數(shù)據(jù)的收集。使用Sqoop進(jìn)行關(guān)系數(shù)據(jù)庫數(shù)據(jù)的導(dǎo)入。
層次結(jié)構(gòu)圖
#mermaid-svg-va2z6HbgHHbu8cN2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .error-icon{fill:#552222;}#mermaid-svg-va2z6HbgHHbu8cN2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-va2z6HbgHHbu8cN2 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-va2z6HbgHHbu8cN2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-va2z6HbgHHbu8cN2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-va2z6HbgHHbu8cN2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-va2z6HbgHHbu8cN2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-va2z6HbgHHbu8cN2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-va2z6HbgHHbu8cN2 .marker.cross{stroke:#333333;}#mermaid-svg-va2z6HbgHHbu8cN2 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-va2z6HbgHHbu8cN2 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .cluster-label text{fill:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .cluster-label span{color:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .label text,#mermaid-svg-va2z6HbgHHbu8cN2 span{fill:#333;color:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .node rect,#mermaid-svg-va2z6HbgHHbu8cN2 .node circle,#mermaid-svg-va2z6HbgHHbu8cN2 .node ellipse,#mermaid-svg-va2z6HbgHHbu8cN2 .node polygon,#mermaid-svg-va2z6HbgHHbu8cN2 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-va2z6HbgHHbu8cN2 .node .label{text-align:center;}#mermaid-svg-va2z6HbgHHbu8cN2 .node.clickable{cursor:pointer;}#mermaid-svg-va2z6HbgHHbu8cN2 .arrowheadPath{fill:#333333;}#mermaid-svg-va2z6HbgHHbu8cN2 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-va2z6HbgHHbu8cN2 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-va2z6HbgHHbu8cN2 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-va2z6HbgHHbu8cN2 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-va2z6HbgHHbu8cN2 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-va2z6HbgHHbu8cN2 .cluster text{fill:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 .cluster span{color:#333;}#mermaid-svg-va2z6HbgHHbu8cN2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-va2z6HbgHHbu8cN2 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
Flume/Sqoop
數(shù)據(jù)源
數(shù)據(jù)采集層
實(shí)時(shí)處理層
數(shù)據(jù)存儲(chǔ)層
業(yè)務(wù)應(yīng)用層
數(shù)據(jù)分析層
各層作用及采用工具或技術(shù)
數(shù)據(jù)采集層
作用:負(fù)責(zé)從各種數(shù)據(jù)源(如日志文件、數(shù)據(jù)庫、API等)收集數(shù)據(jù)。工具/技術(shù):Flume, Sqoop,。 實(shí)時(shí)處理層
作用:處理實(shí)時(shí)數(shù)據(jù)流,進(jìn)行訂單處理等實(shí)時(shí)業(yè)務(wù)。工具/技術(shù):Kafka, Flink。 數(shù)據(jù)存儲(chǔ)層
作用:存儲(chǔ)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),支持快速查詢和歷史數(shù)據(jù)分析。工具/技術(shù):HBase, HDFS。 業(yè)務(wù)應(yīng)用層
作用:提供用戶界面和業(yè)務(wù)邏輯處理,如訂單管理、用戶界面等。工具/技術(shù):Web應(yīng)用框架(如Spring Boot), RESTful API。 數(shù)據(jù)分析層
作用:進(jìn)行復(fù)雜的數(shù)據(jù)分析和報(bào)告生成,支持決策制定。工具/技術(shù):Hive, Spark。
程序設(shè)計(jì)題
下列是一組數(shù)據(jù),該數(shù)據(jù)包含兩列,分別為姓名和出生年份,請(qǐng)統(tǒng)計(jì)出有哪些年份及數(shù)據(jù)中該年份的出生人數(shù)。原始數(shù)據(jù):
Amber 2000
Lily 2001
Lesile 2001
Kate 2000
Mike 2001
Jason 1999
Rachel 1999
參考代碼
//ExamMapper.java
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class ExamMapper extends Mapper
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//將年份提取作為key,value為1
Text year =new Text(); //key
String str = value.toString(); //整行內(nèi)容
String[] parts = str.split(" "); // 數(shù)據(jù)以空格分隔
String birthYear = parts[1]; // 出生年份是第二個(gè)字段
year.set(birthYear);
context.write(year, new IntWritable(1)); //key為年份 value默認(rèn)為1
}
}
//ExamReducer.java
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class ExamReducer extends Reducer
@Override
protected void reduce(Text key, Iterable
//將map結(jié)果根據(jù)key值分類,將value值相加
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
context.write(key, new IntWritable().set(sum)); //根據(jù)key值 將vlaue相加
}
}
//ExamJob.java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class ExamJob {
public static void main(String[] args) throws Exception {
//獲取作業(yè)對(duì)象
Job job = Job.getInstance(new Configuration());
//設(shè)置主類
job.setJarByClass(ExamJob.class);
//關(guān)聯(lián)mapper和reducer
job.setMapperClass(ExamMapper.class);
job.setReducerClass(ExamReducer.class);
//設(shè)置mapper輸出的k、v
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//設(shè)置reducer輸出的k、v
job.setOutputKeyClass(Text.class); //文本
job.setOutputValueClass(IntWritable.class); //int
//設(shè)置job輸入、輸出
FileInputFormat.setInputPaths(job, new Path("file:///source.txt"));
FileOutputFormat.setOutputPath(job, new Path("file:///output"));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
柚子快報(bào)激活碼778899分享:大數(shù)據(jù)復(fù)習(xí)練習(xí)
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。