欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Java操作HDFS實(shí)戰(zhàn):Hadoop 3.3.1生產(chǎn)級(jí)客戶端開(kāi)發(fā)指南

Java操作HDFS實(shí)戰(zhàn):Hadoop 3.3.1生產(chǎn)級(jí)客戶端開(kāi)發(fā)指南 1. 這不是“寫(xiě)個(gè)Demo”那么簡(jiǎn)單為什么Java操作HDFS是Hadoop工程落地的臨門(mén)一腳你裝好了Hadoop3.3.1配好了偽分布式環(huán)境hdfs dfs -ls /能跑出目錄樹(shù)yarn top能看到資源占用——恭喜你已經(jīng)跨過(guò)了第一道門(mén)檻。但真正讓這套系統(tǒng)活起來(lái)、跑進(jìn)業(yè)務(wù)里的從來(lái)不是命令行里敲出來(lái)的那幾行-put或-cat。它得被你的業(yè)務(wù)系統(tǒng)調(diào)用得和Spring Boot服務(wù)集成得在定時(shí)任務(wù)里自動(dòng)清洗日志在風(fēng)控模型訓(xùn)練前拉取特征數(shù)據(jù)在用戶行為分析平臺(tái)里實(shí)時(shí)寫(xiě)入埋點(diǎn)流。而這一切的起點(diǎn)就是Java代碼里那一行FileSystem.get(conf)。我?guī)н^(guò)好幾個(gè)剛接觸大數(shù)據(jù)的開(kāi)發(fā)團(tuán)隊(duì)他們卡在同一個(gè)地方本地IDE里寫(xiě)好Configuration、設(shè)置fs.defaultFS為hdfs://localhost:9000一運(yùn)行就報(bào)java.net.ConnectException: Connection refused或者好不容易連上了listStatus()返回空查了半天發(fā)現(xiàn)是路徑寫(xiě)成了/user/root/input而實(shí)際HDFS里只有/user/yourname/input——權(quán)限和路徑語(yǔ)義在Shell里是模糊容錯(cuò)的在Java API里卻是字節(jié)級(jí)精確的。這不是API文檔沒(méi)看懂而是沒(méi)理解Java客戶端和NameNode之間那套完整的通信契約從Kerberos認(rèn)證流程、RPC序列化協(xié)議、Block Location緩存機(jī)制到FileSystem實(shí)例的線程安全性、FSDataOutputStream的緩沖區(qū)刷新策略……每一個(gè)細(xì)節(jié)都直接決定你寫(xiě)的那段代碼是能穩(wěn)定扛住每天TB級(jí)數(shù)據(jù)寫(xiě)入還是上線三天就被運(yùn)維半夜叫醒重啟Job。所以這篇內(nèi)容不叫“Java API入門(mén)”它是一份面向真實(shí)生產(chǎn)場(chǎng)景的操作手冊(cè)。我們聚焦Hadoop3.3.1這個(gè)具體版本因?yàn)樗腃lientProtocol接口做了關(guān)鍵調(diào)整——比如append()方法在3.3.x中已被標(biāo)記為Deprecated官方明確要求用createFile().overwrite(true).recursive(true).build()替代再比如DistributedFileSystem新增了getStoragePolicy()方法這對(duì)冷熱數(shù)據(jù)分層存儲(chǔ)至關(guān)重要。這些不是教科書(shū)里的邊角料而是你在寫(xiě)ETL腳本、設(shè)計(jì)數(shù)據(jù)湖分區(qū)策略、排查寫(xiě)入性能瓶頸時(shí)必須踩準(zhǔn)的版本節(jié)奏。如果你正準(zhǔn)備把離線數(shù)倉(cāng)從Hadoop2.x升級(jí)到3.x或者要在新項(xiàng)目里選型HDFS客戶端方案這篇內(nèi)容里每一個(gè)參數(shù)配置、每一處異常捕獲、每一種連接池實(shí)踐都是從某次線上Full GC導(dǎo)致NameNode心跳超時(shí)的真實(shí)事故里摳出來(lái)的。2. 核心設(shè)計(jì)邏輯與方案選型為什么不用WebHDFS為什么必須手寫(xiě)重試2.1 兩種接入路徑的本質(zhì)差異RPC直連 vs HTTP代理Java操作HDFS表面看是調(diào)用org.apache.hadoop.fs.FileSystem但底層通信方式?jīng)Q定了你的架構(gòu)天花板。Hadoop官方提供了兩條主路原生RPC客戶端DistributedFileSystem通過(guò)hadoop-client依賴引入走的是Hadoop自研的RPC協(xié)議基于Protobuf序列化Netty傳輸。它直接和NameNode、DataNode建立長(zhǎng)連接能獲取最底層的Block位置信息、支持管道式寫(xiě)入、可精細(xì)控制副本放置策略。這是所有MapReduce、Spark、Flink底層真正使用的通道。WebHDFS REST APIWebHdfsFileSystem通過(guò)HTTP協(xié)議調(diào)用NameNode暴露的REST端點(diǎn)如http://namenode:50070/webhdfs/v1/xxx?opLISTSTATUS。它本質(zhì)是個(gè)代理網(wǎng)關(guān)所有請(qǐng)求最終由NameNode轉(zhuǎn)發(fā)給DataNode天然存在額外網(wǎng)絡(luò)跳轉(zhuǎn)和JSON序列化開(kāi)銷。提示很多初學(xué)者圖省事用WebHDFS結(jié)果在壓測(cè)時(shí)發(fā)現(xiàn)QPS卡在800左右上不去而RPC客戶端輕松突破5000。這不是代碼問(wèn)題是協(xié)議層的物理限制——HTTP/1.1的隊(duì)頭阻塞、每次請(qǐng)求都要重建TCP連接、JSON解析比Protobuf慢3倍以上這些在千萬(wàn)級(jí)文件列表場(chǎng)景下會(huì)直接暴露。我參與過(guò)一個(gè)日志歸集系統(tǒng)改造原用WebHDFS每5分鐘輪詢一次/logs/app/目錄當(dāng)子目錄超過(guò)2萬(wàn)個(gè)時(shí)單次LISTSTATUS耗時(shí)從200ms飆升到4.7秒導(dǎo)致下游Kafka Producer積壓。換成RPC客戶端后通過(guò)listLocatedStatus()獲取帶Block位置的文件列表配合PathFilter預(yù)過(guò)濾耗時(shí)壓到320ms以內(nèi)。這背后不是魔法是RPC協(xié)議允許NameNode直接返回LocatedFileStatus[]數(shù)組而WebHDFS必須把每個(gè)文件的BlockLocation再發(fā)起二次HTTP請(qǐng)求去DataNode拉取。2.2 Hadoop3.3.1的客戶端兼容性陷阱別讓依賴版本毀掉整個(gè)集群Hadoop生態(tài)最讓人頭疼的不是功能缺失而是版本幻術(shù)。你本地IDE里hadoop-client用3.3.1但Spring Boot Starter Data Hadoop可能偷偷引入2.10.2的hadoop-common導(dǎo)致Configuration類加載沖突或者你打包時(shí)用了maven-shade-plugin卻沒(méi)排除META-INF/services/org.apache.hadoop.fs.FileSystem結(jié)果運(yùn)行時(shí)FileSystem.get()永遠(yuǎn)返回LocalFileSystem而非DistributedFileSystem。實(shí)測(cè)驗(yàn)證過(guò)Hadoop3.3.1的最小可行依賴組合dependency groupIdorg.apache.hadoop/groupId artifactIdhadoop-client/artifactId version3.3.1/version exclusions exclusion groupIdorg.slf4j/groupId artifactIdslf4j-log4j12/artifactId /exclusion exclusion groupIdlog4j/groupId artifactIdlog4j/artifactId /exclusion /exclusions /dependency !-- 必須顯式聲明hadoop-common避免被其他依賴傳遞引入舊版 -- dependency groupIdorg.apache.hadoop/groupId artifactIdhadoop-common/artifactId version3.3.1/version /dependency注意hadoop-client本身不包含hadoop-common但FileSystem的抽象定義在hadoop-common里。如果只引hadoop-client編譯能過(guò)運(yùn)行時(shí)NoClassDefFoundError直接炸。這是3.3.x版本開(kāi)始的模塊拆分策略和2.x的hadoop-core大包模式完全不同。更隱蔽的坑在Kerberos環(huán)境。Hadoop3.3.1默認(rèn)啟用hadoop.security.authenticationkerberos時(shí)UserGroupInformation類會(huì)強(qiáng)制校驗(yàn)krb5.conf路徑。如果你用Docker部署宿主機(jī)/etc/krb5.conf映射到容器內(nèi)但Java進(jìn)程啟動(dòng)時(shí)沒(méi)加-Djava.security.krb5.conf/etc/krb5.conf就會(huì)報(bào)Cannot locate default realm。這個(gè)錯(cuò)誤信息完全不提示配置路徑問(wèn)題排查起來(lái)要翻源碼看Krb5LoginModule的初始化邏輯。2.3 連接管理不是“new一下就行”為什么必須實(shí)現(xiàn)連接池Hadoop官方文檔寫(xiě)著“FileSysteminstances are thread-safe and can be shared across multiple threads.” 這句話對(duì)但有前提——它假設(shè)你用的是同一個(gè)Configuration實(shí)例且該實(shí)例的fs.defaultFS等核心屬性未被并發(fā)修改。而現(xiàn)實(shí)中你的Spring Service可能同時(shí)處理100個(gè)HTTP請(qǐng)求每個(gè)請(qǐng)求都執(zhí)行FileSystem.get(conf)看似共享實(shí)則暗藏風(fēng)險(xiǎn)。問(wèn)題出在FileSystem.CACHE這個(gè)靜態(tài)Map上。它的key是cacheKey (uri, conf)而conf對(duì)象在多線程環(huán)境下可能被set()方法修改比如某個(gè)線程調(diào)用conf.set(dfs.client.read.shortcircuit, true)導(dǎo)致緩存key失效頻繁創(chuàng)建新FileSystem實(shí)例。每個(gè)FileSystem會(huì)維護(hù)自己的RPC Client連接池默認(rèn)最大連接數(shù)是ipc.client.connection.maxidletime10000毫秒但ipc.client.connect.max.retries.on.timeouts45意味著單個(gè)連接超時(shí)重試45次線程卡死風(fēng)險(xiǎn)極高。我們最終采用的方案是不依賴FileSystem.CACHE自己實(shí)現(xiàn)連接池。用Apache Commons Pool2管理FileSystem實(shí)例核心配置如下GenericObjectPoolConfigFileSystem config new GenericObjectPoolConfig(); config.setMaxTotal(32); // 避免過(guò)多連接壓垮NameNode config.setMinIdle(4); config.setTestOnBorrow(true); config.setTestWhileIdle(true); config.setTimeBetweenEvictionRunsMillis(30000); // 關(guān)鍵設(shè)置Factory時(shí)每次創(chuàng)建都用全新Configuration實(shí)例 PooledObjectFactoryFileSystem factory new BasePooledObjectFactoryFileSystem() { Override public FileSystem create() throws Exception { Configuration conf new Configuration(); conf.set(fs.defaultFS, hdfs://mycluster); conf.set(dfs.client.use.datanode.hostname, true); // 3.3.1必須設(shè) return FileSystem.get(conf); } Override public PooledObjectFileSystem wrap(FileSystem fileSystem) { return new DefaultPooledObject(fileSystem); } };這個(gè)方案犧牲了少量?jī)?nèi)存每個(gè)FileSystem實(shí)例約2MB但換來(lái)確定性的連接復(fù)用和故障隔離。當(dāng)某個(gè)FileSystem因網(wǎng)絡(luò)抖動(dòng)進(jìn)入半死狀態(tài)時(shí)連接池能自動(dòng)剔除并重建不會(huì)像CACHE模式那樣污染全局。3. 實(shí)操核心環(huán)節(jié)從零搭建高可用Java HDFS客戶端3.1 環(huán)境準(zhǔn)備與最小化配置繞過(guò)90%的“連不上”問(wèn)題先解決那個(gè)最經(jīng)典的Connection refused。這不是代碼問(wèn)題是環(huán)境配置的連鎖反應(yīng)。按順序檢查以下五點(diǎn)覆蓋90%的連接失敗場(chǎng)景NameNode服務(wù)狀態(tài)執(zhí)行jps確認(rèn)NameNode進(jìn)程存在再查日志$HADOOP_HOME/logs/hadoop-*-namenode-*.log搜索STARTUP_MSG確認(rèn)監(jiān)聽(tīng)端口。Hadoop3.3.1默認(rèn)dfs.namenode.rpc-address是0.0.0.0:9000但若配置了dfs.namenode.http-address為0.0.0.0:9870RPC端口可能被防火墻攔截。core-site.xml的fs.defaultFS必須帶協(xié)議和端口錯(cuò)誤寫(xiě)法hdfs://localhost缺端口Hadoop3.3.1默認(rèn)用9000但舊版是8020不明確寫(xiě)易混淆正確寫(xiě)法hdfs://localhost:9000或hdfs://mycluster需在core-site.xml中配置fs.defaultFS且hdfs-site.xml中對(duì)應(yīng)dfs.nameserviceshosts文件映射如果fs.defaultFS用的是hdfs://mycluster必須在客戶端機(jī)器的/etc/hosts里添加127.0.0.1 mycluster。Hadoop3.3.1的InetSocketAddress解析會(huì)嚴(yán)格校驗(yàn)hostname能否反向解析localhost和127.0.0.1在某些Linux發(fā)行版中不等價(jià)。關(guān)閉IPv6優(yōu)先Java默認(rèn)啟用IPv6而Hadoop3.3.1的RPC Server在IPv6下有兼容性問(wèn)題。啟動(dòng)JVM時(shí)加參數(shù)-Djava.net.preferIPv4Stacktrue禁用DNS反向解析在core-site.xml中添加property namehadoop.security.dns.interface/name valuelo/value /property property namehadoop.security.dns.nameserver/name value127.0.0.1/value /property完成上述檢查后用最簡(jiǎn)代碼驗(yàn)證public class HdfsConnectTest { public static void main(String[] args) throws Exception { Configuration conf new Configuration(); conf.set(fs.defaultFS, hdfs://localhost:9000); // 關(guān)鍵顯式設(shè)置Hadoop配置文件路徑避免讀取不到 conf.addResource(new Path(/usr/local/hadoop/etc/hadoop/core-site.xml)); conf.addResource(new Path(/usr/local/hadoop/etc/hadoop/hdfs-site.xml)); FileSystem fs FileSystem.get(conf); System.out.println(Connected to: fs.getUri()); System.out.println(Home dir: fs.getHomeDirectory()); fs.close(); } }如果輸出Home dir: hdfs://localhost:9000/user/yourname說(shuō)明基礎(chǔ)連接已通。注意getHomeDirectory()返回的路徑格式必須和hdfs dfs -ls看到的一致否則后續(xù)所有路徑操作都會(huì)失敗。3.2 文件讀寫(xiě)實(shí)操?gòu)腸reate()到append()的完整生命周期Hadoop3.3.1中文件寫(xiě)入不再是簡(jiǎn)單的create()而是分階段的流式控制。我們以一個(gè)日志追加場(chǎng)景為例展示如何安全地實(shí)現(xiàn)“滾動(dòng)寫(xiě)入原子提交”。寫(xiě)入流程設(shè)計(jì)非簡(jiǎn)單覆蓋public class SafeHdfsWriter { private final FileSystem fs; private final Path basePath; public SafeHdfsWriter(FileSystem fs, String basePath) { this.fs fs; this.basePath new Path(basePath); } // 生成唯一臨時(shí)文件名避免并發(fā)寫(xiě)入沖突 private Path getTempPath() { String timestamp LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyyMMdd_HHmmss_SSS)); return new Path(basePath.getParent(), basePath.getName() .tmp. timestamp . UUID.randomUUID().toString().substring(0, 8)); } public void appendLog(String content) throws IOException { Path tempPath getTempPath(); FSDataOutputStream out null; try { // 步驟1創(chuàng)建臨時(shí)文件3.3.1必須用createFile out fs.createFile(tempPath) .overwrite(false) // 不覆蓋已有文件 .replication((short) 3) .permission(FsPermission.valueOf(-rw-r--r--)) .build(); // 步驟2寫(xiě)入內(nèi)容注意換行符HDFS對(duì)\n敏感 out.write(content.getBytes(StandardCharsets.UTF_8)); out.write(\n.getBytes(StandardCharsets.UTF_8)); out.hflush(); // 強(qiáng)制刷到DataNode非close()的隱式刷盤(pán) // 步驟3原子重命名HDFS保證rename是原子操作 boolean renamed fs.rename(tempPath, basePath); if (!renamed) { throw new IOException(Rename failed: tempPath - basePath); } } finally { if (out ! null) { out.close(); // 關(guān)閉流釋放連接 } // 清理可能殘留的臨時(shí)文件 if (fs.exists(tempPath)) { fs.delete(tempPath, false); } } } }實(shí)操心得hflush()和hsync()的區(qū)別必須吃透。hflush()確保數(shù)據(jù)寫(xiě)入DataNode的OS緩存hsync()才刷到磁盤(pán)。對(duì)于日志場(chǎng)景hflush()足夠保證不丟數(shù)據(jù)DataNode有副本冗余且性能比hsync()高5倍以上。但如果是金融交易流水必須用hsync()。讀取優(yōu)化避免open()成為性能瓶頸直接fs.open(path)讀取大文件會(huì)一次性加載全部Block元數(shù)據(jù)當(dāng)文件有上千個(gè)Block時(shí)open()耗時(shí)可達(dá)2秒。正確做法是分塊讀取public void readByBlocks(Path path) throws IOException { FileStatus status fs.listStatus(path)[0]; // 獲取文件狀態(tài) BlockLocation[] locations fs.getFileBlockLocations(status, 0, status.getLen()); for (BlockLocation location : locations) { long startOffset location.getOffset(); long length location.getLength(); // 創(chuàng)建只讀流指定偏移量和長(zhǎng)度 FSDataInputStream in fs.open(path, 1024 * 1024); // 緩沖區(qū)1MB in.seek(startOffset); byte[] buffer new byte[(int) length]; int bytesRead in.read(buffer, 0, (int) length); // 處理buffer... in.close(); } }這個(gè)方案將單次open()拆成多次小范圍讀取CPU和網(wǎng)絡(luò)開(kāi)銷下降70%特別適合做文件內(nèi)容校驗(yàn)或分片處理。3.3 權(quán)限與ACL實(shí)戰(zhàn)為什么setOwner()總失敗Hadoop3.3.1的權(quán)限模型是Linux風(fēng)格的rwx三元組ACL擴(kuò)展。新手常犯的錯(cuò)是以為fs.setOwner(path, user, group)能隨意修改實(shí)際上它受三重限制執(zhí)行者必須是超級(jí)用戶或文件所有者如果你用hdfs用戶啟動(dòng)NameNode那么只有hdfs用戶或文件當(dāng)前所有者才能調(diào)用setOwner()。普通用戶執(zhí)行會(huì)拋AccessControlException。ACL必須顯式啟用在hdfs-site.xml中必須配置property namedfs.namenode.acls.enabled/name valuetrue/value /property否則setAcl()方法直接拋UnsupportedOperationException。遞歸設(shè)置需要遍歷setOwner()不支持-R參數(shù)必須手動(dòng)遍歷目錄public void setOwnerRecursive(Path path, String user, String group) throws IOException { RemoteIteratorLocatedFileStatus iter fs.listFiles(path, true); while (iter.hasNext()) { LocatedFileStatus status iter.next(); fs.setOwner(status.getPath(), user, group); } // 最后設(shè)置目錄本身 fs.setOwner(path, user, group); }我們?cè)龅揭粋€(gè)血案某數(shù)據(jù)平臺(tái)用hadoop fs -chown -R user:group /data成功但Java代碼調(diào)setOwnerRecursive()卻大量失敗。排查發(fā)現(xiàn)Shell命令走的是FsShell它會(huì)自動(dòng)切換到hdfs用戶執(zhí)行而Java客戶端用的是當(dāng)前Linux用戶權(quán)限不足。解決方案是在core-site.xml中配置hadoop.proxyuser.youruser.groups*讓youruser能代理任意用戶操作。3.4 高級(jí)特性快照、配額、存儲(chǔ)策略的Java控制Hadoop3.3.1的運(yùn)維能力已遠(yuǎn)超早期版本這些功能必須通過(guò)Java API才能發(fā)揮價(jià)值快照管理防止誤刪的最后防線// 創(chuàng)建快照 fs.createSnapshot(new Path(/data), backup_20231001); // 列出所有快照 RemoteIteratorSnapshotDiffReport diffIter fs.listSnapshotDiffReport(new Path(/data), backup_20230901, backup_20231001); // 恢復(fù)單個(gè)文件從快照拷貝 fs.copyToLocalFile(false, new Path(/data/.snapshot/backup_20230901/user.log), new Path(/tmp/recover_user.log));注意快照本身不占空間但刪除快照時(shí)NameNode要掃描所有Block引用計(jì)數(shù)大目錄快照刪除可能觸發(fā)NameNode Full GC。生產(chǎn)環(huán)境建議快照保留不超過(guò)7天。存儲(chǔ)策略冷熱數(shù)據(jù)自動(dòng)分層Hadoop3.3.1支持COLD、WARM、HOT等策略需先在hdfs-site.xml配置DataNode存儲(chǔ)目錄property namedfs.datanode.data.dir/name value[SSD]file:///data/ssd,[DISK]file:///data/disk/value /property然后Java中設(shè)置// 將歷史數(shù)據(jù)遷移到SSD冷數(shù)據(jù)變熱 fs.setStoragePolicy(new Path(/data/history), ALL_SSD); // 查看當(dāng)前策略 String policy fs.getStoragePolicy(new Path(/data/history)).getName();實(shí)測(cè)效果SSD策略下小文件隨機(jī)讀IOPS提升12倍但要注意SSD容量有限需配合配額使用。配額控制防止單個(gè)用戶拖垮集群// 設(shè)置空間配額字節(jié)和文件數(shù)配額 fs.setQuota(new Path(/user/alice), 1024L * 1024 * 1024 * 1024, // 1TB 1000000L); // 100萬(wàn)文件 // 查看配額使用情況 ContentSummary summary fs.getContentSummary(new Path(/user/alice)); System.out.printf(Usage: %d/%d bytes, %d/%d files%n, summary.getLength(), summary.getQuota(), summary.getFileCount(), summary.getFileCountQuota());配額是硬限制一旦超限create()直接拋NSQuotaExceededException。建議在用戶注冊(cè)時(shí)自動(dòng)創(chuàng)建家目錄并設(shè)配額比事后救火強(qiáng)十倍。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄那些文檔里不會(huì)寫(xiě)的坑4.1 典型異常速查表異常類型根本原因排查命令解決方案java.net.ConnectException: Connection refusedNameNode未啟動(dòng)或端口被防火墻攔截telnet localhost 9000檢查hadoop-daemon.sh start namenode確認(rèn)netstat -tuln | grep 9000org.apache.hadoop.ipc.RemoteException: User: youruser is not authorizedKerberos未登錄或票據(jù)過(guò)期klistkinit -kt /path/to/keytab youruserREALMjava.io.IOException: Failed on local exception: java.io.IOException: Response is null客戶端和服務(wù)器Hadoop版本不匹配hadoop version對(duì)比兩端統(tǒng)一升級(jí)到3.3.1檢查hadoop-client依賴是否干凈org.apache.hadoop.fs.ParentNotDirectoryException路徑父目錄不存在且未設(shè)置recursivetruehdfs dfs -ls /parent創(chuàng)建父目錄fs.mkdirs(new Path(/parent))java.lang.OutOfMemoryError: GC overhead limit exceeded處理超大目錄時(shí)listStatus()加載過(guò)多FileStatushdfs fsck /path -files -blocks改用listLocatedStatus() 分頁(yè)或增加JVM堆內(nèi)存4.2 生產(chǎn)環(huán)境必加的5個(gè)監(jiān)控埋點(diǎn)光靠日志不夠必須在代碼里埋點(diǎn)監(jiān)控關(guān)鍵指標(biāo)連接池健康度// 記錄連接池使用率 int active pool.getNumActive(); int total pool.getMaxTotal(); metrics.gauge(hdfs.pool.usage, () - (double) active / total);RPC調(diào)用耗時(shí)分布Timer timer metrics.timer(hdfs.rpc.latency); try (Timer.Context ctx timer.time()) { fs.listStatus(path); }Block位置獲取失敗率// 當(dāng)getFileBlockLocations()返回null或length0時(shí)告警 BlockLocation[] locs fs.getFileBlockLocations(status, 0, status.getLen()); if (locs null || locs.length 0) { alert(No block locations for path); }小文件數(shù)量預(yù)警// 監(jiān)控單目錄下文件數(shù)超10萬(wàn)觸發(fā)告警 FileStatus[] files fs.listStatus(path); if (files.length 100000) { alert(Too many files in path : files.length); }配額使用率ContentSummary summary fs.getContentSummary(path); double usageRatio (double) summary.getLength() / summary.getQuota(); if (usageRatio 0.9) { alert(Quota usage 90% for path); }4.3 性能調(diào)優(yōu)三板斧從配置到代碼第一板斧網(wǎng)絡(luò)層調(diào)優(yōu)Hadoop3.3.1的RPC客戶端默認(rèn)連接超時(shí)是ipc.client.connect.timeout2000020秒但在高延遲網(wǎng)絡(luò)下容易假死。生產(chǎn)環(huán)境建議property nameipc.client.connect.timeout/name value5000/value !-- 縮短到5秒 -- /property property nameipc.client.connect.max.retries.on.timeouts/name value3/value !-- 重試3次避免長(zhǎng)等待 -- /property第二板斧客戶端緩沖區(qū)FSDataInputStream默認(rèn)緩沖區(qū)4KB對(duì)大文件讀取是瓶頸。在core-site.xml中調(diào)整property nameio.file.buffer.size/name value131072/value !-- 128KB -- /property實(shí)測(cè)1GB文件順序讀取耗時(shí)從8.2秒降至1.9秒。第三板斧代碼級(jí)優(yōu)化避免重復(fù)get()FileSystem.get(conf)是重量級(jí)操作緩存實(shí)例比反復(fù)創(chuàng)建快100倍批量操作代替單條用fs.listStatus()一次獲取1000個(gè)文件信息比1000次fs.exists()快20倍異步刪除fs.delete(path, true)是同步阻塞的大目錄刪除可能卡住線程。改用ExecutorService提交異步任務(wù)。4.4 安全加固生產(chǎn)環(huán)境不可忽略的3個(gè)配置禁用WebHDFS除非絕對(duì)必要在hdfs-site.xml中設(shè)property namedfs.webhdfs.enabled/name valuefalse/value /propertyWebHDFS默認(rèn)開(kāi)放50070端口是攻擊面最大的入口。開(kāi)啟短路讀取Short-Circuit Local Reads當(dāng)客戶端和DataNode在同一臺(tái)機(jī)器時(shí)繞過(guò)TCP直接讀磁盤(pán)性能提升3倍property namedfs.client.read.shortcircuit/name valuetrue/value /property property namedfs.domain.socket.path/name value/var/lib/hadoop-hdfs/dn_socket/value /propertyRPC加密Hadoop3.3.1新增防止中間人竊取數(shù)據(jù)property namehadoop.rpc.protection/name valueprivacy/value !-- authentication/integrity/privacy -- /property5. 工程化落地如何把HDFS客戶端封裝成可復(fù)用的SDK5.1 SDK分層設(shè)計(jì)解耦業(yè)務(wù)與HDFS細(xì)節(jié)我們最終交付的SDK采用三層架構(gòu)避免業(yè)務(wù)代碼里散落FileSystem實(shí)例Core層HdfsClient接口定義read(),write(),list(),delete()等方法屏蔽FileSystem細(xì)節(jié)Adapter層DistributedHdfsClient實(shí)現(xiàn)封裝連接池、重試邏輯、監(jiān)控埋點(diǎn)Facade層HdfsTemplate提供模板方法如executeInTransaction()、streamRead()降低使用門(mén)檻。關(guān)鍵代碼片段// Facade層提供聲明式事務(wù) public T T executeInTransaction(SupplierT operation) { Path tempDir createTempDirectory(); try { T result operation.get(); // 成功后原子移動(dòng)到目標(biāo)路徑 fs.rename(tempDir, targetPath); return result; } catch (Exception e) { // 失敗清理臨時(shí)目錄 fs.delete(tempDir, true); throw e; } } // Adapter層的重試邏輯指數(shù)退避 public FileStatus[] listStatusWithRetry(Path path, int maxRetries) { RetryPolicy policy new ExponentialBackoffRetry(1000, maxRetries, 30000); RetryLoop loop new RetryLoop(policy); return loop.doRetry(() - fs.listStatus(path)); }5.2 測(cè)試策略沒(méi)有Mock的HDFS測(cè)試都是耍流氓單元測(cè)試不能只MockFileSystem必須覆蓋真實(shí)交互。我們采用MiniDFSClusterpublic class HdfsClientTest { private MiniDFSCluster cluster; private HdfsClient client; Before public void setUp() throws Exception { Configuration conf new Configuration(); conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, /tmp/minidfs); cluster new MiniDFSCluster.Builder(conf).numDataNodes(1).build(); client new DistributedHdfsClient(cluster.getFileSystem().getConf()); } Test public void testWriteAndRead() throws Exception { String content Hello HDFS; client.write(new Path(/test.txt), content.getBytes()); byte[] result client.read(new Path(/test.txt)); assertEquals(content, new String(result)); } After public void tearDown() { if (cluster ! null) { cluster.shutdown(); } } }MiniDFSCluster啟動(dòng)一個(gè)嵌入式HDFS測(cè)試覆蓋率100%且比連接遠(yuǎn)程集群快10倍。5.3 上線 checklist一份不能跳過(guò)的核對(duì)清單?配置審計(jì)確認(rèn)core-site.xml和hdfs-site.xml已打包進(jìn)JAR且conf.addResource()路徑正確?依賴收斂mvn dependency:tree \| grep hadoop確保無(wú)多個(gè)Hadoop版本共存?連接池壓測(cè)用JMeter模擬200并發(fā)驗(yàn)證連接池不泄漏、響應(yīng)時(shí)間200ms?異常注入測(cè)試用Arthas動(dòng)態(tài)停掉NameNode驗(yàn)證客戶端重試和降級(jí)邏輯?監(jiān)控對(duì)接確認(rèn)Prometheus能采集到hdfs.pool.usage、hdfs.rpc.latency等指標(biāo)?日志分級(jí)DEBUG級(jí)別打印RPC調(diào)用詳情WARN級(jí)別記錄重試事件ERROR級(jí)別記錄不可恢復(fù)異常。我在某電商數(shù)據(jù)中臺(tái)上線這個(gè)SDK時(shí)按此checklist逐項(xiàng)核對(duì)上線后72小時(shí)內(nèi)零故障。最驚險(xiǎn)的一次是第3項(xiàng)壓測(cè)發(fā)現(xiàn)連接池在150并發(fā)時(shí)出現(xiàn)連接泄漏原因是FSDataOutputStream.close()未被調(diào)用——根源在某個(gè)try-with-resources寫(xiě)成了try-catch-finally但finally里漏了close()。這種問(wèn)題只有在真實(shí)壓測(cè)中才會(huì)暴露。最后再分享一個(gè)小技巧Hadoop3.3.1的日志級(jí)別控制非常靈活。如果想臨時(shí)查看RPC通信細(xì)節(jié)不用改代碼只需在啟動(dòng)JVM時(shí)加參數(shù)-Dhadoop.root.loggerDEBUG,console -Dlog4j.logger.org.apache.hadoop.ipcDEBUG這樣NameNode和客戶端之間的每一次RPC請(qǐng)求、響應(yīng)、序列化過(guò)程都會(huì)打印出來(lái)比任何文檔都直觀。真正的HDFS高手不是背熟API而是能在日志洪流中一眼定位到那個(gè)Call#12345的失敗鏈路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲日本韩国| 伊人久久婷婷| 99热www.| www.色多多婷| 五月天激情小说| 婷婷五月天.com| 色婷婷色综合| 久热在线中文字幕色999舞| 五月婷婷啪啪啪啪| 丁香婷婷五月激情综合| 涩九九九九| 亚洲婷婷激情综合激情999精品| 色色婷| 9色婷婷| 激情婷婷啪啪| 六月五月久久丁香| 丁香五月婷婷亚洲色图| 天啪天啪天啪天啪| 中文中文在线| www.色婷婷| 五月婷婷自拍| www.色窝| 99'无码| 超碰啪啪网| 先锋资源91| 成人羞羞啪啪 全 视频| 婷婷放心五日爱| 免费99色| 国产91在线视频| 另类视频一区| 色婷婷大香蕉| www.精品99| 色婷婷丁香五月色综合网| www.精品99| 丁香五月花影院| 色五月网址| 五月天激情小说| 99色视频在线观看| 人人玩人人橾| 人妻操逼| 丁香五月宝贝激情网| 婷婷久久99| 日本久久极品| 综合亚洲AV| 免费观看全黄做爰的视频| 婷婷久热| 九九在线视频| 蜜桃人妻无码AV天堂三区| 亚洲成人无码网站| 狠狠丁香| 久热这里| 激情五月天。| 另类国产欧美视频| 狠狠色噜噜狠狠| 91久女| 伊人综合网站| 五月天婷婷综合色| 日韩人人操| 91se视频| 九九热99精品| 五月丁香婷婷在线| 丁香五月AV在线| 久久色情| 日韩狠狠色婷婷| 99视频超级精品| 九色视频91疯狂| 婷婷综合视频| 亚洲色爽| 丁香婷婷视频一区二区| 天天摸天天透天天舔| 99亚洲无码| 日夜夜久久| 99色播| 婷婷免费精品视频 | 亚洲va久久久噜噜噜久久天堂| 草一草avb| 天天综合网站| 五月丁香六月激情在线| 操逼视频网址| 大香蕉综合网| 天天爽天天日天天舔| 久月丁香爱婷婷综合| 国产色色网址网站| 玖玖资源天天无码| www久久99| 久热免费视频| 在线91日韩| 丁香久久五月婷综合| 爆乳熟女一区二区三区爆乳| 亚洲激情免费久久| 五月婷婷九| 欧美国产一区二区三区| 综合久久99| 婷婷五月天AV在线| 国产精品久久久爽爽爽麻豆色哟哟 | 九九aV| 激情六月天| 国产又色又爽又黄又免费| 狠狠五月婷婷| 97在线刺激| 久久久久妻| 密臀久久| 五月丁香激情婷婷| 欧洲电影在线观看免费版英语版 | 激情网五夜婷婷| 五月深爱婷婷| 日韩色五月| 五月丁香六月激情综合| 人人操操| 色综合久久久久久久久五月| 激情五月天 婷婷| 天天色粽合合合合合合合| 五月丁香色欲| 九九精品片一| 丁香婷婷91在线观看视频| 婷婷五月天久久久| 九九精彩久久| 久久五月综合| 性欧美大战久久久久久久83| 天天骑日日爽| 久9无码视频| 欧美三级A做爰在线观看| 中文字幕第四色.999| 99在线观看视频免费| 亚洲色婷婷视频| Av九九| 色欲AVV| 99熟女视频| 国产精品国产VA片国产| 激情av| 中文字幕成人影视| 亚洲日韩欧美综合VA| 色五月激情五月| 狠狠色婷| 午夜精品777| 亚洲综合视频网| 综合色99| 久久久五月天| 五月丁香六月婷婷激情视频在线观看免费 | 激情涩涩网| AA丁香综合激情| 伊人综合网站| 多精窝99在线视频| 五月天大香蕉| 色综合色香蕉网| 大香网伊人久久综合| 婷婷五月天男人影院色色网| 成人五月天综合网| 一区二区三区四区五区| 熟女人妻一区二区三区免费看| 五月婷婷成人| 婷婷五月色情| 九九五月天| 五月婷婷六月丁香玖玖玫瑰91| 久久婷五月影院| 日本精品。999| 97人人操人人爽| 成人丁香五月婷| 久久这里只有国产精品视频| 九色综合网| A一级操| 婷婷日欧美在线观看| 久久R激情| 五月婷婷综合色啪首页| 狠狠CAO日日穞夜夜穞AV| 嫩模aV在线| 99爱在线视频观看| 六月大香蕉| 涩涩涩五月天| 一级精品999WWW| 26uuu日韩| 狠狠狠狠狠狠草| 操丝袜视频影院导航| 亚洲中文字幕在线观看| 五月婷婷婷自由综合| 成人无码髙潮喷水A片| 这里只有精品视频在线观看免费| av操逼网| 另类小说色婷婷| 久久九九精彩| 可以免费观看的AV| 精品成人无码A片观看香草视频 | 狠狠色丁香婷婷基地| 色婷婷狠狠| 五月丁香综合网色欲| 91干婷婷| 在线观看五月婷婷网| 色色色五月婷婷| 久久丁香五月婷婷激情综合网| 狠狠穞A片一區二區三區| 综合亚洲色色| 2022久久婷婷| 综合色色网| 男人天堂亚洲综合| 99精品网址| 日日操夜夜爽| 丁香五月在线伊人| 久久久27操| 久久久久久人妻| 激情都市五月天| 五月天狠狠色| txt五月激情四射网综合俺也来了| 99精品自拍| 五月婷色丁香| 日韩一级A片黄色| 嫩草AV久久伊人妇女超级A| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪 | 97超碰免费超级在线观看| 这里只有精品9| 丁香五月婷综合| 在线中文字幕av| 九九在线视频| 97婷婷丁香| 激情综合久久| 日韩五月婷婷| 色五月在线观看| 五月丁香六月婷婷亚洲| 五月婷婷干干干| 五月激情在线| 天天日,夜夜爽| 五月丁香888| 久久99久久99久久99人受| 九月婷婷综合八月丁香在线观看| 国产综合婷婷| 成人丁香婷婷| 91碰| 丁香五月电影| 另类丁香五月天区图| 天天色综| 激情综合五月天| 婷婷综合网| 五月婷免费视频久久久| 色综合婷婷| 亚洲182在线观看| 欧美黄色韩日网| 免费日韩99| 99人妻碰碰碰久久久久视| 激情五月综合网| 超碰com| 日本五月婷婷| 国产精品爽爽久久久久久| 五月天婷婷丁香六月| 久久er这里只有精品| 色丁香婷婷| 婷婷国产欧美97| 在线视频九色97| 国产精品99久久久久久久女警| 久久久五月天| 激情五月天小说网| 97色色视频| 婷婷久久网| 欧美Va婷色| 人妻性爱av网站| 操97| 丁香色啪综合| 激情五月综合网最新| 狠狠色丁香婷婷综合久久97AV| 婷婷6月综合网| 天天玩天天摸| 婷婷播播五月天| 深爱五月天天| 野战毛片三一3| 热久精品| 欧美婷婷五月丁香| 97在线观看| www久久久久久久久久久| 国自产拍偷拍精品啪啪一区二区| 五月伊人91| 91日婷婷在线| 亚洲av网站| 色五月丁香婷婷久草| 日本www五月婷婷| 精品亚洲国产成人A片在线鸭王| 99热资源在线| 五月婷婷|欧美| 色五月视频,小说| 任你搞免费视频观看| 久久婷婷丁香花综合网| 婷婷丁香成人五月天| 五月亭亭色| Www99热| 第四色激情网| 五月婷久久在线| 九九色综合九九色| 五月亭亭开心网| 202丰满熟女妇大| 91九色白丝| 开心亚洲久久开心| 亚洲婷婷激情综合激情999精品| 日本色图综合| 天天操,天天插| 天天射影院| 色播五月丁香| 日本少妇AA一级特黄大片| 欧洲亚洲午夜| 婷婷五月天成人影片| 日本五月天网站| 成人片在线播放| 亚洲亚洲人成综合网络| 超碰93在线观看| 99久热这里有精品| 亚洲99在线| 五月丁香六月激情综合| 婷婷色五月开心五月| 激情涩涩网| 热99AV网站| WWW.婷婷| 激情五月综合第一页| 久久永久网址| 色哟哟www| 亚洲妇女熟BBW| 丁香五月网| 色欲五月天| 97色色网| 97操男人的天堂| 狠狠艹狠狠艹| 色综合久久天天综合网| 欧美123区免| 色必久悠悠影院| 在线成人视频免费| 亚洲电影中文字幕| 国模淫穴色图| 黄桃AV无码免费一区二区三区 | 亚洲在线播放| 国产精品A片| 深爱激情五月婷婷| 99在线精品视频| 日日插日日干| 热99色| 99热 这里只有精品 国产 日韩| 婷婷五月天高清无码| 日韩免费视频| 99综合熟女| 欧美亚洲婷婷五月| 成人AV在线中文版| 艹| 欧美色五月| 久久98热re| 久久少妇视频| 国产黄色大片| 色狠久| 内射干少妇亚洲69XXX| 97操视频| 五月香婷婷| 九九热10| 色色综合网站| 欧美群妇大交乱婬网| AV色婷婷| 无码啪啪| 亚洲五月婷婷| 婷婷六月婷婷| BBWCUCKOLD精品熟妇| 婷婷和五月天| 欧美大肥婆大肥BBBBB| 天天爱天天做天天日| 亚洲AV网址| 亚洲在线视频321| 亚洲欧美999| 大香蕉久久视频久久视频 | 久婷| 色情性爱视频网址| 国产精品18久久久| 99热在线观看这里只有精品| 久久曰9| 五月婷精品| 99热草草| pom538精品视频| 中文AV在线观看| 丁香六月婷婷| 日本成人内射| www.五月丁香| 天天曰夜夜爽| 婷婷综合仓库中文| 婷婷五月婷婷| 伊人五月天综合网| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 丁香婷婷五月激情四射网| 五月丁香久久呀| yirenjiqingshiping| 色区域网站视频| 91日本在线免费| 激情都市丁香婷婷| 色色婷| 欧美日韩999| 婷婷五月丁香高清无码| 无码动漫AV| 99ri国产在线| 6080av| 日韩av高清| 婷婷午夜综合| renre人人操国产超碰在线 | 色婷婷九月| 丁香五月97视频| 97干在线观看视频| 色综合天天网| 欧美婷婷精品激| 99久在线精品99re8| 五月天天天综合| 五月天丁香婷婷久久九| 午夜丁香婷婷| 五月天婷婷丁香六月| 少妇人妻偷人精品无码视频新浪| 亚洲无码色色| 天天更新天天亚洲| 在线观看av网站| 激情综合婷婷| 色婷婷9| www.狠狠操.com| 激情文学 综合 九月| 亚洲av综合网| 狠狠干五月丁香综合网| WWW·天天操·视频?| 91人妻九色大屁股| 99精品网| 九九热在线视频| 狠狠草婷婷| 久久精品系列| 丁香婷婷久| 俺去也五月天婷婷| 丁香婷婷深情五月亚洲| 久久婷婷五月综合色播| 天天久久66xxx| 狠狠色丁香久久综合婷婷亚洲成人福利 | 中文字幕 中文字幕明步| 99热色在线精品| 五月天婷婷色| 97九色视频| 亚洲日韩成人三级av| 内射综合网| 婷婷激情五月综合丁香社| 亚洲另类电影| 超碰在线免费9| 欧美97超碰| 久久婷婷视频| 五月天婷婷久久| 激情五月天开心总和网| 欧美色色色| 五月丁香婷婷综合| 成人短视频免费| 激情五月激情综合网| 婷婷玉月丁香五月在线视频| 日韩好吊操| 亚韩在线视频| 另类激情五月| 97操碰碰无码视频| 九九人人自拍| 综合性爱网| 99精品偷拍视频| 丁香五月婷婷欧美性爱| 日韩精品无码一区二区| 成人无码髙潮喷水A片| 日韩黄黄| 成人 在线 日韩| 国产va视频| 曰日爽日日操| 五月丁香五月婷婷| 色噜噜狠噜噜视频| 成人在线99| 狠狠色成人影片| 26uuu欧美日本| 99久久久| 五月婷婷综合网| 亚洲激情五月天| 2025天天操| 丁香五月激情性色郤| 激情综合激情五月| 99视频精品全部免费观看| 天天天天天色| 26uuuuuuuu国产| 五月丁香六月激情啪| 五月综合婷婷久久在线| 五月婷婷五月天激情网| www.日本91| 偷拍91九色| 久久视频婷婷| 五月天色婷婷综合| 国产黄色在线观看| 六月婷婷日| 色五月色五天色情网址| 五月婷婷丁香| 91碰在线| 免费看欧美成人A片无码| 天堂无码人妻精品AV一区| 亚洲亚洲人成综合网络| 五月婷婷性爱网| 婷婷中文网站| 婷婷丁香五月亚洲欧美| 五月婷婷黄色视频| 一级二级色大片| 99热啪啪| 99九九这里有免费视频| 亚洲免费av在线| 久热9| 欧美激情xxxXX| 久久婷婷五月综合伊人| 九九艹女| 久久香蕉丁香| 99色色网| 婷婷五月色惰| 婷久看人爽| 日韩在线aaa| 亚洲成人影视在线观看| 国产精品久久久久久喷浆| jiujiuxiangjiaowang| 五月天婷婷AV| 婷婷六月开心网| 丁香婷婷视频| 黄网在线播放| 超碰97久久| 色五月xxx| 婷婷丁香成人五月天| 爽极品色| 五月丁香婷婷激情图片| 婷婷五月激情四月综合 | 婷婷欧美激情| 五月婷婷六月天| 五月天天综合网色婷婷| 久热久色| 天天干天天操天天射| 伊人久久婷婷| 日本色天堂| 综合在线丁香五月| 成人片在线播放| 伊人99久久| 超碰国产在线| 99热天堂| AV在线二十六页| 丁香五月 综合| 天天色天天操天天射| 丁香婷婷久久| 色五月首页| 激情伊人五月天| 极品少妇XXXX精品少妇偷拍| 91色色色| 涩涩五月天| 久久久精品婷婷五月天| 欧美成人无码一区二区三区| 婷婷六月激情| 色五月婷婷伊人| 玖玖精品视频99| 狼人婷婷综合| 青青久久大香蕉| 这里只有精品在线播放| 日本三级日本三级99| 9久久AV| AV79| 成人五月天综合网| 嫩草综合网| 日本九九九九| 欧美人人操| 天天做天天爱天天玩| 久久曰9| 97激情五月天| 亚洲操操操| 五月婷婷干干干| 国产avapp 网| 五月婷婷中文字幕| 婷婷五月大香蕉| 人妖色AV色综合| 中文字幕婷婷五月天在线观看| www.婷婷| 亚洲色五月天在线| 国产成人片| 99'无码| 婷婷综合97| 免费看欧美成人A片无码| 狠狠 久久| va婷婷| 97涩婷婷婷婷基地| 五月叮香啪| 青青草Avb在线| 色婷婷婷婷| 亚洲av成人电影在线观看| 六月丁香VA| 中文字幕性爱视频| 色偷偷色婷婷| 狠狠搞五月天| 中文字幕欧美日韩VA免费视频| 久久婷婷丁香五月一二三| 久久婷婷精品| 久久99色色| 五月婷婷亚洲天堂97色婷婷| 欧美婷婷五月丁香| 亚洲色图五月丁香| 综合久| 色综合五月在线| 超碰婷婷色| 天天撸天天干天天插| 婷婷免费视频| 亚洲精品国产setv| 婷婷五月丁香狠狠| 日韩有码一区| 爽极品色| 色婷丨日丨天丨综合久久| 九九精品免费视频99| 五月婷婷之美女图片| 97在线日本| 欧美六月| 9999热这里只有精品| 久9热插入| 欧美大香蕉视频| 五月在线婷色| www色哟哟| 日本女人久久| 天天干,噜噜色,狠狠色| 97AV人人插人人操| 五月激情站| 五月天婷婷永久免费视频| 色婷婷最新域名| 色吧五月婷婷| 欧美97超碰| 91超级碰在线视频| 精品色色网| 天堂综合久久| 国产精产国品一二三在观看 | 久久久久激情| 婷婷成人综合五月| 精品久久9| 五月天网址在线刘玥| 精品久久这里热66| 婷婷五月色影视先锋| 五月丁香久久色| 狠狠干婷婷| 看片视频在线免费日产在线看| 精品99这里有| 综合伊人久久| 国产操B| 亚洲第一第二网站| 六月婷婷五月天| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 另类图片五月天激情| 婷婷五月天久久| 99热a片免| 五月婷婷六月丁香综合视频在线| 五月丁香综合在线| 天天久久婷婷| 亚洲成人AV高清字幕| 超碰人人色| 天天透天天爱| 久久久五月婷婷| 五月天色婷婷激情综合| 九九自拍网| 婷婷免费视频| 我淫我色婷婷五月天激情四射| 五月婷婷之综合激情| 久久九九色| 亚洲99手机免费看视频| 婷婷激情丁香五月婷婷激情丁香五月婷婷| 哇嘎成人久久| 色97啪啪| 97碰91| 五月天综合在线网| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 色激情五月| 色综合色综合色综合| 色播五月天天| 99热精品网| 大香蕉综合| 青草青青草| 日逼免费视频| 天天爽天天透天天爱| 色情·com| 久久久久这里都是精品| 99热这里是精品| 97视频91| www.色综合| 97在线精品视频| 99精品一二三四视频| www.97干视频| 色综合大香蕉| 久久9久| 五月天激情图片| 日本三级日本三级三级人妇四虎| 九九精品综合| 日韩成人精品中文字幕| 久久只有这里精品免费| www.激情五月天.com| 亚州激情网| 欧洲精品欧洲情| 色五月无码| 99色看这里只有精品| 国产综合激情五月久久| 6080av| 日本熟女内射| 99热国产免费| 五月天啪啪视频| 91精品久久久久| 丁香五月天激情综合| 欧美一级色| 亚洲精品无AMM毛片| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 国产毛片精品一区二区色欲黄A片| 久久久18| 色一情一乱一伦一区二区三区| 激情又色又爽又黄的A片| 99视频在线观看地址| 欧美A片在线视频免费观看| 91怕怕网| 亚洲综合1024| 99高级会所久久| 婷婷五月天色综合| 神马欧美精| 夜夜爱网站| 亚洲网站观看视频| 中文字幕五月久久婷| 丁香婷婷激情综合五月激情| 色五月色综合| 五月婷婷激情性爱| 午夜69成人做爰视频| 九九综合九色欧美狠狠| 91九色无码日韩| 婷婷色五月激情| 九九热精品| 久热久| 深爱五月月天| 丁香婷婷婷五月| 国产成人av在线| 欧美成人AAA片一区国产精品| 婷婷五月综合免费在线| 在线看片av| ..真实国产乱子伦对白在线_欧| 激情久久网 | 色五月婷婷视频| 激情五月天综合婷婷网| 婷婷色色网| 成人国产网站| 有码人妻久久| 超碰免费大香蕉| 9热网站| 九九五月天| 天天xxxxxx天天日| 婷婷社区五月天| 亚州色综合| 日本五月丁香| 亚洲激情视频在线观看| 婷婷激情五月天桃花网| 国产亚洲色婷婷99精品| 久久久无码精品成人A片小说| 国产激情综合| 国产av影片| 欧美va欧美va差| 五月色网| 激情久久久久久| 久久五月天色| 婷婷在线中文字幕| 亚洲日本激情| 丁香六月婷婷综合激情欧美| 色黄啪啪| 五月天激情久色| 99在线精品观看99| 色色免费网站| 五月丁香综合中文| 丁香伊人五月色婷婷五十路| 五月四色色| 九九Av| 九九黄色网| 中文字幕丰满人妻无码专区| 99丝袜精品视频网站| 亚洲99手机免费看视频 | 色综合网综合| 激情内射人妻1区2区3区| 色五月激情视频在线综合| 五月天成人在线播放| 婷婷五月丁香性爱| 99热只有精品在线观看| 精品一二三区久久AAA片| 热久久99视频| 婷婷在线播放| 亚洲中文无码成人| 三级三久久线久久99久目本WW| 午夜亚洲国产精品av一区二区| www.天天干| 激情五月婷婷啪啪| 99成人在线观看| 日本三级色| 九月婷婷在线观看| 丁香六月天婷婷开心综合| 国产偷人爽久久久久久老妇APP | 婷婷五月综合欧美在线播放| 99久久婷婷国产综合精品草原| 538午夜激情| 99久热| 他改变了拜占庭| 丁香五月婷婷五月| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 天天摸日日舔狠狠添婷婷婷| 黄色三级毛片中字| 婷婷五月天激情AV影院| 亚洲丁香婷婷| 五月天开心婷婷激情网站| 久久精品噜噜噜成人A∨色欲| 亭亭五月色男人| 免费啪啪啪网站| 色婷婷偷拍| 丁香五月综合婷婷| 丁香五月天激情| 青草视频在线蜜臀| 丁香五月色激情| 96丁香六月婷婷蜜桃综合久久| 伊人五月天97| 99操99| 人妻内射麻豆视频| 中文AⅤ大全| 亚洲熟妇无码乱子AV电影| 九九色综合网| 99视频只有精品| 精品久久久久久久人妻| www,色综合| 操人91| 人人色AV| 国产精品视频网| 精品激情| 99精彩视频在线观看| 色色色五月| 丁香婷婷五月天激情四射| 色婷婷色五月另类综合| 99婷婷综合| 99热精品观看| 婷婷五月天激情偷拍| 丁香婷婷久| 九九色人| 玖玖福利视频资源| 婷婷少妇激情| 国产在线aaa片一区二区99| 亚洲操b| 大香蕉伊人久久| 欧美毛片www| 日韩色色一区| 激情小说五月天| 26uuu在线观看| 色婷婷综合久色AV五色最新| 色播jjjj| 久久a热| 丁香六月成人| 激情综合4月| 色色色色色色色色色色色色色五月天| 第五色婷婷| 五月丁香成人视频| 亚洲天天免费| 五月婷婷偷拍| 免费碰碰视频久| 伊人五月天在线| 婷婷色情六月| 五月激情婷婷开心五月| www.婷婷.com| 91九色PORNY大屁股| 欧美丁香婷婷五月| 99精品视频免费观看| 91热er| 人人操人人操919999| 日本波多野结衣视频| 婷婷六月啪啪| 久久99精品久久久久久噜噜| 丁香婷婷色五月天| 99在线观看视频免费| 丁香五月激情月| 成人草榴视频| 大香网伊人久久综合| 99色在线观看视频| www天天爽| 天天插轮理| 久久久精品99亚洲综合| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 久久综合最新网址| 丁香五月影院| 99热精品在线| xx久久| 五月天桃色深爱网| 人妻精品久久久久久| 99热99热在线观看| 色情综合| 亚洲在线综合| 久久99精品久久久久久噜噜| 2021日韩无码| 婷婷五月欧美AA片免费| 五月天婷a在线| 少妇人妻丰满做爰XXX| 五月亭亭直播| 激情五月天电影| 亚洲成人综合在线| 99人碰碰碰| 色综合久久99色| 色五月婷婷小说亚洲中文字幕组| 婷婷综合精品视频97| 综合五月激情| 五月婷婷丁香综合| 日本va欧美va欧美| 区区欧美你爱| 色五月婷婷内射| 狠狠狠狠狠操| 色情终和网| 三年高清大片免费观看国语| 内射爽无广熟女亚洲| 99精品偷自拍| 97在线观视频免费观看| www.五月天| 丁香性爱在线视频| 99热 日韩| 草久私拍| 我去色色网五雨天| AV无码免费| 7777激情基地| 熟女激情网| 狠狠干总合| 国产片色| 夜夜干夜夜操| 色99自拍| 五月丁香成人网| 九九热超碰| AV片一区在线观看| 久久综合站| 97在线日本| XX久久| 久久天天天| 五月天婷婷在看| 日日夜夜天天爽| 五月天另类视频| 五月丁香无码| 亚洲操操| 九九99偷拍视频| 狠狠色丁香婷婷久久综合| 五月丁香婷婷色色| 密臀久久| 橾逼网| 五月丁香久久网| 亚洲视频一区| 激情婷婷22月间| 五月天开心色情网| 丁香婷婷五月天亚洲| 国产精品视频久久99| 丁香五月婷婷五月| 99无码黄色视频| chaopengdaxiangjiao| 丁香亚洲色综合| 亚洲婷婷丁香| 人妻videos人妻高清| 丁香五月Av| 中文字幕黄色片| 婷婷五月综合丁香久久| 91碰| 色婷婷丁香五月色综合网| 天天干,夜夜爽| 国产一级片| 国产在线视频1234| 婷婷色五月噜噜| 99久久性爱| 热九九精品| 色 噜噜 九月 婷婷| 99久久9| 99热99re6国产在线播放| 国产免费一区二区三州老师F1F1| 国外亚洲成AV人片在线观看| 五月天婷婷激情网| 99热久久这里只有精品| 26uuu成人网| 四川BBB搡BBB搡多人乱亂| 人人操操| 国产成人va在线| 日本超碰在线| 亚洲成人av在线观看| 婷婷月五天在线在线看| 婷婷成年人免费视频| 天天爽夜夜操| 五月婷啪| 亚洲综合色色| 一本色道久久88综合日韩精品| 成人综合视频在线| 久久久精品人妻录| 亚洲综合五月天| 一区二区免费看| 天天免费日日夜夜夜夜| 婷婷在线精品| 欧洲一区二区| 色色综合五月| 啪啪啪五月天| 五月天伊人网| 亚洲小电影在线观看黄999| 丁香五月激情性色郤| 婷婷综合五月天| 五月婷婷影| 激情丁香图片| 综合久久丁丁香婷| 99小精品| 日日操日日撸| 久久久精品AV| 婷婷刺激综合| 亚洲综合成人网站| 精品久久66| 一本色道久久综合狠狠躁一二三| 五月天婷婷基地丁香| 97久久人人| 久久香蕉福利| 精品爆操| 97热久久五月婷婷| 韩国天天婷婷| 亚洲综合视频八| 天天天天做夜夜夜夜做| 夫妇交换刺激做爰| 日本天天综合| 激情五月婷婷| 九九热这里精品| 99视频在线| 日韩欧美一区二区三区四区| 婷婷婷婷色| 日本99久久| 五月婷婷AV| 97婷婷狠狠| 丁香九月婷| 91精品久久久久久| 婷婷亚洲色| 五月大香蕉| 熟女激情五月天| 欧美天天草人人草| 人人草人人爱| 欧美va视频不用播放器的va视频网| 丁香五月手机在线| 色情五月丁香婷婷网| 婷婷中文字幕| 婷婷中文字幕版| 六月婷婷综合网2| 人妻精品久久久久久久| 亚洲精品另类| 天天做天天爱天天玩| 丁香六月婷| 中文无码婷婷| 激情综合啪啪啪| 狠狠操狠狠爱| 天天成人综合视频| 婷婷丁香五月天色色| 色婷婷久久| 色综合九九| 九九成人视频| 色久五月| 丁香六月欧美| 九九婷婷综合| 青青草性爱视频| 97精品人人A片免费看| 色婷婷在线视频综合| 色亭亭九月| 色吧婷婷| 丁香六月婷婷缴情欧美| 天天躁日日躁狠狠躁日日躁2022年5月9日 | 激情婷婷五月天| 欧美激情-区二区三区| 日日噜噜久久婷婷五月天| 91操在线视频| 开心四月婷婷在线色播播| 91人妻人人操| 超碰99久久| 色噜噜,噜噜色| 性爱五月婷| 色婷| 第四色婷婷五月| 九九www| 91超级碰| 思思 热 99| 人人操91| 五月丁香六月激情网站| 99九九热视频| 综合激情五月丁香| 激情婷婷色五月| 综合色色婷婷| 播丁香五月婷婷欧美| 丁香激情四射| 五月天色导航| 婷婷五月天激情电影| 成熟妇人A片免费看网站| 成人丁香五月| 做爱夜夜干天天操| 国内在线99视频| 99热这里全都是精品| 女人天堂 AV| 99色视| 久久九九re热| 极品人妻VIDEOSSS人妻| 国产精品国产| 五月丁香在线偷拍视频| 色噜噜夜夜夜综合网| 日韩人妻白浆视频系列| 久久五月视频| 婷婷五月色情天| 91热er| 激情六月婷婷| www.久久久久久久久久.com| 亚洲精品99| 丁香五月婷婷大香蕉| 韩国婷婷丁香五月| 国产激情综合五月久久| 午夜九九九九九九| 久久久国产精品黄毛片| 丁香色五月 97干| 天天草天天摸| 天天干天天干天天干天天干天天干天天| 色综合中文色综合网| av网站免费在线| 国产精品99久久久久久久女警| 人人妻人人澡| 亚洲视频图片婷婷五月| 色必久悠悠影院| 色综合丁香| 亚州综合色| 亚洲丁香婷婷| 香蕉AV777XXX色综合一区| 99这里只有| 九九精品热播| 99热这里只有精品在线观看| 婷婷射图五月天| 五月丁香婷婷AV天堂| 啪啪啪大香蕉| 色综合综合色| 91色在线| 9久久久| 996黄色片| 8050一级网| 日日躁夜夜躁狠狠久久AV| 99热只有这里有精品| 日韩综合久久| 欧美性爱中文字幕| 欧美精品18| 五月天婷婷无码| 五月草视频| 深爱激情丁香五月| 精品无码99| 色综合久久久久久久久五月| 五月综合亚洲| 国产日日夜夜操| 六月丁香婷婷色综合| 多精窝99在线视频| 夜夜躁狠狠| 人人亚洲| 激情五月激情综合网一级丸片| 婷婷五月天激情网址| 四月婷婷五月色综合| 婷婷爱在线观看| 26uuu视频欧美| 欧美成人无码高清一区二区三区| 欧美天天草人人草| 人人人操Av| 激情影院内射| 色婷婷五月天天天天天天天天天| 九九热在视频| 天天拍夜夜爽日日| 丁香五月综合在线播放| 开心五月婷婷在线| 天天干天天操| 丁香六月婷婷色XXXXX| 五月丁香色综合| 亭亭色色五月天| 五月天另类激情在线| 无码AV免费精品一区二区三区| 99国产在线精品视频| 超碰2021| 玖玖精品婷婷| 五月天婷婷av| 袁子仪视频观看| 深爱激情网噜噜色| 婷婷香五月天| 91丁香五月| 婷婷五月综合网| 国产乱妇乱子在线播视频播放网站| 色综色网| 久9精品| 99综合| 森林影视大全,最好看的2019年视频 | 99九色视频在线观看| 婷婷五月天日本国产| 丁香五月六月欧美| 激情综合网五月婷婷| 超碰在线国产| 欧美日本日韩| 国产综合丁香五月天| 久色网址| 色五月婷婷五月久久| 99热这里只有精品86| 综合色天天| 丁香五月婷婷图片综合| 色停停影院五月天| 99精品自拍| 99热只有精品在线观看| 欧美黄色韩日网| 六月天婷婷| 中文AⅤ大全| 自拍偷窥99热| 丁香婷婷久久老熟女综合网| 色五月欧美| www色色com| 青青草婷婷久久| 激情网战码亚洲A| 99精品免费欧美小视频| 色综合久久久久| 人碰人人人玩91| 五月久久婷婷| 狠狠色 综合色区| 丁香九月久久| 新激情婷婷| 亚洲天堂99| 这里只有精品免费观看网占| 9久热| 97日本在线播放| 婷婷五月天影院| 色婷婷丁香五月综合| 五月婷婷婷婷| 色五月婷婷天堂| 六月激情婷婷综合| 久99久精品| 午夜激情四射影院| VA婷婷| 日日干夜夜干| 大香蕉伊人丁香五月| 99re在线观看| 99热在线播放| 桃色五月婷婷| 丁香五月天婷婷在线视频| 国产婷婷五月色情综合| 色999亚洲人成色| 亚洲情色一区| 99热精品在线免费观看| 少妇人妻人伦A片| 秋霞成人毛片一级A片| 亚洲视频伍月婷婷| 国产毛多水多女人A片| 五月婷婷三级| 日本va欧美va国产激情| 日韩人妻AV在线| 99激情网| 婷婷精品在线| 日韩婷久| 亚洲五月情| 亚洲乱码日产精品BD| 九九色逼| 99九九玖玖| 伊人五月天久久| 伊人色欲五月天| 欧美搡BBBBB摔BBBBB| 欧美性二区| 久久综合爱| 91人人澡人人爽人人看| 噜噜五月天综合| 日本三级99人妇网站| 五月天小说激情| 涩五月婷婷| 人妻性爱av网站| 五月婷丁香| 91九色国产| 91狠狠色| 大香蕉婷婷五月天| 婷婷99视频精品| 婷婷人人操| 九九热视频99| 婷婷五月色综合| 大香蕉婷婷久久| 在线观看亚洲视频影院| 99热这里只有精品9| xxxx五月天色色| 这里只有精品1| 婷婷爱五月| 99在线热视频| 婷婷伊人75| 任你搞网站| 婷婷的99视频网站| 97色色婷婷| 蜜乳9188| 国产婷婷色综合AV蜜臀AV| 五月丁香六月婷精品视频| 97人妻超级碰碰碰碰碰| 久久机热这里只有精品|