版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大數(shù)據(jù)管理與監(jiān)控:ClouderaManager:大數(shù)據(jù)概論與Hadoop生態(tài)系統(tǒng)1大數(shù)據(jù)概論1.11大數(shù)據(jù)的定義與特征大數(shù)據(jù)是指無(wú)法在合理時(shí)間內(nèi)用傳統(tǒng)數(shù)據(jù)處理工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合。其特征通常被概括為“4V”:Volume(大量):數(shù)據(jù)量巨大,可能達(dá)到PB甚至EB級(jí)別。Velocity(高速):數(shù)據(jù)生成和處理速度極快,需要實(shí)時(shí)或近實(shí)時(shí)的處理能力。Variety(多樣):數(shù)據(jù)類型多樣,包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。Veracity(真實(shí)性):數(shù)據(jù)的準(zhǔn)確性和可靠性,對(duì)數(shù)據(jù)質(zhì)量有高要求。1.22大數(shù)據(jù)處理流程大數(shù)據(jù)處理流程主要包括以下幾個(gè)步驟:數(shù)據(jù)采集:從各種來(lái)源收集數(shù)據(jù),如傳感器、社交媒體、日志文件等。數(shù)據(jù)存儲(chǔ):使用分布式文件系統(tǒng)或數(shù)據(jù)庫(kù)存儲(chǔ)大量數(shù)據(jù)。數(shù)據(jù)處理:對(duì)數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換和分析,可能使用批處理或流處理技術(shù)。數(shù)據(jù)分析:通過(guò)統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)等方法,從數(shù)據(jù)中提取有價(jià)值的信息。數(shù)據(jù)可視化:將分析結(jié)果以圖表或報(bào)告的形式展示,便于理解和決策。1.2.1示例:使用Hadoop進(jìn)行數(shù)據(jù)處理假設(shè)我們有一批日志數(shù)據(jù),需要統(tǒng)計(jì)每天的訪問(wèn)量。我們可以使用HadoopMapReduce來(lái)處理這些數(shù)據(jù)。#map.py
importsys
#讀取輸入數(shù)據(jù)
forlineinsys.stdin:
#清洗數(shù)據(jù),去除空白
line=line.strip()
#分割數(shù)據(jù),假設(shè)日志格式為:日期時(shí)間URL
date,_,_=line.split()
#輸出鍵值對(duì),鍵為日期,值為1
print(f'{date}\t1')#reduce.py
importsys
#初始化計(jì)數(shù)器
current_date=None
current_count=0
#讀取map輸出的數(shù)據(jù)
forlineinsys.stdin:
#清洗數(shù)據(jù)
line=line.strip()
#解析數(shù)據(jù)
date,count=line.split('\t')
count=int(count)
#如果日期改變,輸出結(jié)果并重置計(jì)數(shù)器
ifcurrent_date!=date:
ifcurrent_date:
print(f'{current_date}\t{current_count}')
current_count=count
current_date=date
else:
#否則,累加計(jì)數(shù)
current_count+=count
#輸出最后一條數(shù)據(jù)
ifcurrent_date==date:
print(f'{current_date}\t{current_count}')1.33大數(shù)據(jù)技術(shù)棧簡(jiǎn)介大數(shù)據(jù)技術(shù)棧包括多個(gè)層次,從數(shù)據(jù)存儲(chǔ)、處理到分析和可視化,涵蓋了多種技術(shù)和工具:數(shù)據(jù)存儲(chǔ):HadoopHDFS、ApacheCassandra、AmazonS3等。數(shù)據(jù)處理:ApacheHadoop、ApacheSpark、ApacheFlink等。數(shù)據(jù)倉(cāng)庫(kù):ApacheHive、ApacheImpala、GoogleBigQuery等。數(shù)據(jù)集成:ApacheKafka、ApacheNifi等。數(shù)據(jù)分析:ApacheMahout、ApacheFlinkML等。數(shù)據(jù)可視化:Tableau、Qlik、Grafana等。1.3.1示例:使用ApacheSpark進(jìn)行數(shù)據(jù)處理假設(shè)我們需要對(duì)一個(gè)大型數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)分析,可以使用ApacheSpark的DataFrameAPI來(lái)簡(jiǎn)化數(shù)據(jù)處理流程。frompyspark.sqlimportSparkSession
#創(chuàng)建SparkSession
spark=SparkSession.builder.appName("BigDataAnalysis").getOrCreate()
#讀取數(shù)據(jù)
data=spark.read.format("csv").option("header","true").load("data.csv")
#數(shù)據(jù)清洗和轉(zhuǎn)換
data=data.na.drop()#刪除空值
data=data.withColumn("age",data["age"].cast("int"))#轉(zhuǎn)換數(shù)據(jù)類型
#數(shù)據(jù)分析
average_age=data.selectExpr("avg(age)").collect()[0][0]
print(f"平均年齡:{average_age}")
#關(guān)閉SparkSession
spark.stop()以上代碼展示了如何使用ApacheSpark讀取CSV文件,進(jìn)行數(shù)據(jù)清洗、轉(zhuǎn)換和分析,最后輸出平均年齡。這只是一個(gè)簡(jiǎn)單的示例,實(shí)際應(yīng)用中,Spark可以處理更復(fù)雜的數(shù)據(jù)處理和分析任務(wù)。2大數(shù)據(jù)管理與監(jiān)控:Hadoop生態(tài)系統(tǒng)概覽2.1Hadoop生態(tài)系統(tǒng)2.1.1Hadoop核心組件詳解HadoopDistributedFileSystem(HDFS)HDFS是Hadoop的核心存儲(chǔ)組件,設(shè)計(jì)用于存儲(chǔ)大量數(shù)據(jù)。它將數(shù)據(jù)分成塊(默認(rèn)大小為128MB),并分布在網(wǎng)絡(luò)中的多個(gè)節(jié)點(diǎn)上,提供高容錯(cuò)性和數(shù)據(jù)訪問(wèn)速度。示例代碼:使用JavaAPI讀取HDFS上的文件importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FileSystem;
importorg.apache.hadoop.fs.Path;
publicclassHDFSReadExample{
publicstaticvoidmain(String[]args)throwsException{
//配置Hadoop
Configurationconf=newConfiguration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
//獲取HDFS文件系統(tǒng)實(shí)例
FileSystemfs=FileSystem.get(conf);
//指定HDFS上的文件路徑
PathfilePath=newPath("/user/hadoop/data.txt");
//打開(kāi)文件
FSDataInputStreamin=fs.open(filePath);
//讀取文件內(nèi)容
byte[]buffer=newbyte[1024];
intbytesRead=in.read(buffer);
while(bytesRead>=0){
System.out.write(buffer,0,bytesRead);
bytesRead=in.read(buffer);
}
//關(guān)閉文件
in.close();
fs.close();
}
}數(shù)據(jù)樣例:假設(shè)HDFS上有一個(gè)名為data.txt的文件,內(nèi)容為:Hello,Hadoop!
ThisisatestfileforHDFS.MapReduceMapReduce是Hadoop的計(jì)算框架,用于處理大規(guī)模數(shù)據(jù)集。它將數(shù)據(jù)處理任務(wù)分解為Map和Reduce兩個(gè)階段,Map階段處理數(shù)據(jù)的分片,Reduce階段匯總結(jié)果。示例代碼:使用JavaAPI實(shí)現(xiàn)一個(gè)簡(jiǎn)單的WordCountMapReduce程序importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IntWritable;
importorg.apache.hadoop.io.LongWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
importorg.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.mapreduce.Reducer;
importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importjava.io.IOException;
publicclassWordCount{
publicstaticclassTokenizerMapper
extendsMapper<LongWritable,Text,Text,IntWritable>{
privatefinalstaticIntWritableone=newIntWritable(1);
privateTextword=newText();
publicvoidmap(LongWritablekey,Textvalue,Contextcontext
)throwsIOException,InterruptedException{
Stringline=value.toString();
String[]words=line.split("\\s+");
for(Stringw:words){
word.set(w);
context.write(word,one);
}
}
}
publicstaticclassIntSumReducer
extendsReducer<Text,IntWritable,Text,IntWritable>{
privateIntWritableresult=newIntWritable();
publicvoidreduce(Textkey,Iterable<IntWritable>values,
Contextcontext
)throwsIOException,InterruptedException{
intsum=0;
for(IntWritableval:values){
sum+=val.get();
}
result.set(sum);
context.write(key,result);
}
}
publicstaticvoidmain(String[]args)throwsException{
Configurationconf=newConfiguration();
Jobjob=Job.getInstance(conf,"wordcount");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job,newPath(args[0]));
FileOutputFormat.setOutputPath(job,newPath(args[1]));
System.exit(job.waitForCompletion(true)?0:1);
}
}數(shù)據(jù)樣例:假設(shè)輸入文件input.txt的內(nèi)容為:HelloHadoop,HelloWorld!2.1.2Hadoop生態(tài)系統(tǒng)擴(kuò)展組件ApacheHiveHive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,用于對(duì)Hadoop數(shù)據(jù)進(jìn)行查詢和分析。它提供了一個(gè)SQL-like的查詢語(yǔ)言,稱為HiveQL,使得Hadoop的MapReduce編程更加容易。示例代碼:使用HiveQL查詢數(shù)據(jù)--創(chuàng)建數(shù)據(jù)庫(kù)
CREATEDATABASEIFNOTEXISTSmydb;
--創(chuàng)建表
CREATETABLEIFNOTEXISTSmydb.mytable(idINT,nameSTRING,ageINT)
ROWFORMATDELIMITEDFIELDSTERMINATEDBY','
STOREDASTEXTFILE;
--加載數(shù)據(jù)
LOADDATALOCALINPATH'/path/to/local/file.csv'INTOTABLEmydb.mytable;
--查詢數(shù)據(jù)
SELECT*FROMmydb.mytableWHEREage>30;數(shù)據(jù)樣例:假設(shè)file.csv的內(nèi)容為:1,John,25
2,Alice,32
3,Bob,28
4,Charlie,3ApachePigPig是一個(gè)用于數(shù)據(jù)分析的高級(jí)語(yǔ)言,它將數(shù)據(jù)處理任務(wù)轉(zhuǎn)換為一系列的MapReduce作業(yè)。Pig的腳本語(yǔ)言稱為PigLatin,它簡(jiǎn)化了數(shù)據(jù)流的處理。示例代碼:使用PigLatin處理數(shù)據(jù)--加載數(shù)據(jù)
A=LOAD'/user/hadoop/data.txt'USINGPigStorage('\t')AS(id:chararray,name:chararray,age:int);
--過(guò)濾年齡大于30的數(shù)據(jù)
B=FILTERABYage>30;
--將結(jié)果存儲(chǔ)到HDFS
DUMPB;數(shù)據(jù)樣例:假設(shè)data.txt的內(nèi)容為:1John25
2Alice32
3Bob28
4Charlie352.1.3Hadoop數(shù)據(jù)存儲(chǔ)與處理機(jī)制Hadoop的數(shù)據(jù)存儲(chǔ)和處理機(jī)制基于HDFS和MapReduce。HDFS提供數(shù)據(jù)的分布式存儲(chǔ),而MapReduce則負(fù)責(zé)數(shù)據(jù)的并行處理。數(shù)據(jù)存儲(chǔ)HDFS將數(shù)據(jù)存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,每個(gè)數(shù)據(jù)塊都有多個(gè)副本,以提高數(shù)據(jù)的可靠性和可用性。數(shù)據(jù)塊的大小默認(rèn)為128MB,可以進(jìn)行配置。數(shù)據(jù)處理MapReduce將數(shù)據(jù)處理任務(wù)分解為Map和Reduce兩個(gè)階段。Map階段處理數(shù)據(jù)的分片,將數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì)。Reduce階段匯總Map階段的輸出,生成最終結(jié)果。示例代碼:使用MapReduce處理HDFS上的數(shù)據(jù)//Map階段代碼
publicstaticclassMapextendsMapper<LongWritable,Text,Text,IntWritable>{
privatefinalstaticIntWritableone=newIntWritable(1);
privateTextword=newText();
publicvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{
Stringline=value.toString();
String[]words=line.split("\\s+");
for(Stringw:words){
word.set(w);
context.write(word,one);
}
}
}
//Reduce階段代碼
publicstaticclassReduceextendsReducer<Text,IntWritable,Text,IntWritable>{
privateIntWritableresult=newIntWritable();
publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)throwsIOException,InterruptedException{
intsum=0;
for(IntWritableval:values){
sum+=val.get();
}
result.set(sum);
context.write(key,result);
}
}數(shù)據(jù)樣例:假設(shè)HDFS上有一個(gè)名為data.txt的文件,內(nèi)容為:Hello,Hadoop!
ThisisatestfileforHadoop.通過(guò)上述MapReduce程序,可以統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù)。3ClouderaManager基礎(chǔ)3.1ClouderaManager安裝與配置3.1.1安裝ClouderaManagerClouderaManager是一個(gè)用于部署、管理、監(jiān)控和優(yōu)化ApacheHadoop集群的工具。安裝ClouderaManager需要以下步驟:下載ClouderaManager安裝包:訪問(wèn)Cloudera官方網(wǎng)站下載適合您操作系統(tǒng)的ClouderaManager安裝包。安裝服務(wù)器端:在管理節(jié)點(diǎn)上運(yùn)行安裝腳本,例如:#解壓安裝包
tar-xzfcloudera-manager-server-<version>.tar.gz
#進(jìn)入解壓后的目錄
cdcloudera-manager-server-<version>
#運(yùn)行安裝腳本
sudo./cm-<version>-server-installer.bin配置服務(wù)器端:在安裝過(guò)程中,您需要配置數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)設(shè)置和管理員賬戶等信息。安裝客戶端:在集群中的其他節(jié)點(diǎn)上安裝ClouderaManagerAgent,例如:#下載安裝包
wget<url_to_cm_agent>
#運(yùn)行安裝腳本
sudo./cm-<version>-agent-installer.bin啟動(dòng)ClouderaManager:完成安裝后,啟動(dòng)ClouderaManager服務(wù)器:sudo/etc/init.d/cloudera-scm-serverstart3.1.2配置ClouderaManager配置ClouderaManager主要包括設(shè)置網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)和集群信息。例如,配置數(shù)據(jù)庫(kù)連接:#編輯配置文件
sudovi/etc/cloudera-scm-agent/config.ini
#添加數(shù)據(jù)庫(kù)連接信息
db.mgmt.url=jdbc:postgresql://<db_server>:<port>/<db_name>
db.mgmt.user=<db_user>
db.mgmt.password=<db_password>3.2使用ClouderaManager管理Hadoop集群3.2.1創(chuàng)建Hadoop集群在ClouderaManager中創(chuàng)建Hadoop集群涉及以下步驟:登錄ClouderaManager:使用Web界面登錄ClouderaManager。添加集群:在ClouderaManager中選擇“添加集群”,并指定集群名稱和Hadoop版本。配置集群:選擇要安裝的Hadoop組件,如HDFS、YARN、HBase等,并配置它們的參數(shù)。部署集群:完成配置后,部署集群并等待安裝完成。3.2.2管理Hadoop服務(wù)ClouderaManager提供了豐富的功能來(lái)管理Hadoop服務(wù),包括啟動(dòng)、停止、重啟服務(wù),以及查看服務(wù)狀態(tài)和日志。#通過(guò)API管理服務(wù)
curl-XPOST-uadmin:admin-H"Content-Type:application/json"-d'{"service_name":"<service_name>","command":"start"}'http://<cm_server>:7180/api/v11/clusters/<cluster_name>/services/<service_name>/commands3.3ClouderaManager監(jiān)控與性能優(yōu)化3.3.1監(jiān)控Hadoop集群ClouderaManager提供了詳細(xì)的監(jiān)控功能,可以實(shí)時(shí)查看集群的健康狀況、性能指標(biāo)和資源使用情況。#查看集群監(jiān)控信息
curl-uadmin:adminhttp://<cm_server>:7180/api/v11/clusters/<cluster_name>/hosts3.3.2性能優(yōu)化性能優(yōu)化涉及調(diào)整Hadoop配置參數(shù)、優(yōu)化數(shù)據(jù)存儲(chǔ)和查詢策略等。例如,調(diào)整HDFS的副本數(shù):<!--在hdfs-site.xml中添加-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>3.3.3使用ClouderaManager進(jìn)行性能調(diào)優(yōu)ClouderaManager提供了性能調(diào)優(yōu)建議,通過(guò)分析集群的性能數(shù)據(jù),給出優(yōu)化建議。例如,調(diào)整YARN的資源分配:<!--在yarn-site.xml中添加-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>通過(guò)以上步驟,您可以使用ClouderaManager有效地管理、監(jiān)控和優(yōu)化Hadoop集群,提高大數(shù)據(jù)處理的效率和可靠性。4大數(shù)據(jù)管理與監(jiān)控實(shí)踐4.1ClouderaManager中的數(shù)據(jù)管理策略在大數(shù)據(jù)環(huán)境中,數(shù)據(jù)管理策略至關(guān)重要,它確保數(shù)據(jù)的完整性、安全性和可訪問(wèn)性。ClouderaManager提供了一系列工具和功能,幫助管理員在Hadoop生態(tài)系統(tǒng)中實(shí)施高效的數(shù)據(jù)管理策略。4.1.1數(shù)據(jù)生命周期管理ClouderaManager支持?jǐn)?shù)據(jù)生命周期管理,允許數(shù)據(jù)在不同的存儲(chǔ)層之間移動(dòng),以優(yōu)化存儲(chǔ)成本和訪問(wèn)性能。例如,可以將熱點(diǎn)數(shù)據(jù)保留在高速SSD上,而將冷數(shù)據(jù)歸檔到低成本的HDD或云存儲(chǔ)中。4.1.2數(shù)據(jù)安全數(shù)據(jù)安全是數(shù)據(jù)管理的關(guān)鍵方面。ClouderaManager提供了多種安全機(jī)制,包括:認(rèn)證與授權(quán):使用Kerberos進(jìn)行用戶認(rèn)證,以及通過(guò)Role-BasedAccessControl(RBAC)實(shí)現(xiàn)細(xì)粒度的權(quán)限管理。數(shù)據(jù)加密:支持在傳輸和存儲(chǔ)過(guò)程中對(duì)數(shù)據(jù)進(jìn)行加密,保護(hù)數(shù)據(jù)免受未授權(quán)訪問(wèn)。4.1.3數(shù)據(jù)備份與恢復(fù)Cl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車制造行業(yè)顧問(wèn)工作總結(jié)
- 年產(chǎn)800萬(wàn)平方米水性超細(xì)纖維材料項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025年全球及中國(guó)建筑隔熱用氣凝膠行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)有機(jī)肥快速測(cè)定儀行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)實(shí)驗(yàn)室冷藏柜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)管路無(wú)菌連接器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球模型實(shí)時(shí)運(yùn)維系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)2.4GHz 無(wú)線通訊芯片行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球金屬加工磨料行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球高效智能無(wú)孔包衣機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025江蘇連云港市贛榆城市建設(shè)發(fā)展集團(tuán)限公司招聘工作人員15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 江蘇省揚(yáng)州市蔣王小學(xué)2023~2024年五年級(jí)上學(xué)期英語(yǔ)期末試卷(含答案無(wú)聽(tīng)力原文無(wú)音頻)
- 數(shù)學(xué)-湖南省新高考教學(xué)教研聯(lián)盟(長(zhǎng)郡二十校聯(lián)盟)2024-2025學(xué)年2025屆高三上學(xué)期第一次預(yù)熱演練試題和答案
- 決勝中層:中層管理者的九項(xiàng)修煉-記錄
- 《有機(jī)化學(xué)》課件-第十章 羧酸及其衍生物
- 2024年海南公務(wù)員考試申論試題(A卷)
- 中醫(yī)培訓(xùn)課件:《經(jīng)穴推拿術(shù)》
- 臨床藥師進(jìn)修匯報(bào)課件
- 北京市首都師大附中2025屆數(shù)學(xué)高三第一學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 2024年貴州省高職(??疲┓诸惪荚囌惺罩新毊厴I(yè)生文化綜合考試語(yǔ)文試題
評(píng)論
0/150
提交評(píng)論