18個PPT,29個提問解答,都在這兒啦!

2021-03-02 Flink 中文社區

4月25-26日,全球首個 Apache 頂級項目在線盛會 Flink Forward 中文精華版重磅開播,聚焦 Alibaba、 Google、AWS、Uber、Netflix、DellEMC、微博、滴滴等各大網際網路公司實時計算的經典場景和業務故事,由 Flink 核心貢獻者們對 19 個優質 talk 進行中文翻譯及解說,您可免費在線觀看。

為期一天半的 Flink Forward 中文精華版在北京、上海、杭州三地進行聯動直播,吸引了全球近 20000 人次開發者在線觀看。除優質內容外,Flink Forward 精華版還首次開創問題徵集,在線觀看直播的同學可及時對嘉賓分享提出疑問並邀請講師在線解答。

▼Flink Forward 中文精華版 PPT 下載▼

掃描下方「Flink 中文社區」公眾號二維碼,後臺回復關鍵字【0425PPT】即可下載大會全部分享內容~

以下選取了大會部分具有代表性的問題及講師回答,共享給大家。

Keynote: Introducing Stateful Functions 2.0: Stream Processing meets Serverless Applications

解說嘉賓:李鈺(絕頂),Apache Flink Committer,Apache Flink 1.10 Release Manager,阿里巴巴高級技術專家。

「Q」:PyFlink 支持 Stateful Function 嗎?另外 Stateful Function 的 State 管理是怎麼樣的?

「A」目前暫不支持。

Stateful Function 的 State 管理和通常 streaming 作業的 State 管理是一樣的,並沒有作特殊處理。actor system 或者說應用這塊,它和 stream processing 有一個很大的區別在於流處理是一個 DAG (有向無環圖)的結構。但是 actor system 是可能有環的。Stateful Function 實際上是增加了一個 feedback loop 支持,但它並沒有去改動 runtime 內核,可以理解為是利用 streaming 自帶的 state 管理來做的。

圓桌 | Lyft: 基於 Flink 的準實時海量數據分析平臺

「Q」:Flink 實時寫 parquet 文件會不會產生大量小文件呀?怎麼處理小文件問題呢?

「A」用 StreamingFileSink 去寫 Parquet 格式的數據是會產生小文件的,這樣會導致 presto/hive client 去分析時性能比較差,Lyft 的做法是通過 SuccessFile Sensor 讓 airflow 自動調度一些 ETL 的任務來進行 compaction 和 deduplication,已經處理完成的會將 rawevent 的分區 swap 出去。這樣處理以後得到更好的數據質量,同時提升交互式查詢的性能。

演講 | 微博基於 Flink 的機器學習實踐

於茜,微博機器學習研發中心高級算法工程師。多年來致力於使用 Flink 構建實時數據處理和在線機器學習框架,有豐富的社交媒體應用推薦系統的開發經驗。曹富強,微博機器學習研發中心系統工程師。現負責微博機器學習平臺數據計算模塊。主要涉及實時計算 Flink,Storm,Spark Streaming,離線計算 Hive,Spark 等。目前專注於 Flink 在微博機器學習場景的應用。

「Q」:Gemini 是怎麼使用的?

「A」這個問題比較複雜,後期我們會在公眾號發布詳細的使用說明及對比實驗。

Tips:後期微博機器學習研發中心團隊將就「如何使用 Gemini」主題分享一篇技術文章,除詳細的使用說明外還有對比實驗分析,敬請期待!

「Q」:樣本的多流 join 是基於哪種窗口實現的?

「A」Flink 現有的窗口計算不能滿足我們的業務需求,我們用 union + timer 實現了滑動窗口,數據存儲到 map state 裡,底層採用 rocksdb + ssd 硬碟來存儲,並且自定義了樣本的 trigger 觸發機制。我們對比過 rocksdb,java heap 這兩種 state backend 的策略,在均衡業務場景,處理速度和硬體代價之後,最終選擇rocksdb + ssd 來作為 state 的 backend。

「Q」:多媒體特徵計算是怎麼通過 Flink 支持的,能詳細解釋下嗎?這塊的穩定性如何?如何保證的?

「A」首先我們在 gpu上部署算法模型,並且把模型封裝成 rpc 服務。然後通過 Flink 來調用 rpc 服務,實時的生成圖片,視頻的各種特徵。

穩定性 :我們通過 Flink metrics,對整個作業的全流程做監控,包括但不限於rpc服務的耗時,成功率等指標。通過 At Least Once 機制來保證每條數據都處理一次。通過對 source (kafka) 端上的監控來監控整體作業的延遲。

另外根據業務場景引入了高可用的保障機制(對帳系統),來保證數據處理的穩定性,目前重點業務可以達到99.999%的成功率。

「Q」:模型上線後如何使應用自動將原始輸入數據轉變成模型需要的輸入變量?

「A」模型上線預測時,在在線系統中,我們從特徵服務中獲取特徵欄位,拼接出原始特徵數據,然後經過一個特徵處理的模塊,將原始樣本轉化為模型需要的輸入數據(可以是libsvm格式或者是適合 DNN 的其他數據格式),然後傳到模型服務模塊,特徵處理的輸出的數據格式以及特徵處理的代碼,訓練與預測時保持一致的,唯一的區別在於訓練的數據相對在線預測的數據會多出 label 相關的欄位。

演講 | Alink:提升基於 Flink 的機器學習平臺易用性「Q」:支持實時機器學習的算法多嗎?如何防止個別奇異值對模型的影響?「A」Alink 所有的分類、回歸模型都支持流式數據的預測,在線學習算法方面目前支持 FTRL。在各個模型訓練時,有對特殊數據的處理,另外,使用 Alink 的數據處理組件,也可以在訓練前進行數據清洗。
「Q」:1.10 已經沒有 FlinkML 了吧?FlinkML 和 ALink 之間的關係是?「A」FlinkML 為 Flink 自帶的機器學習算法庫,分為舊的版本和新的版本。在做 Alink 前,我們首先認真調研了當時的 FlinkML(即舊版本 FlinkML)的情況,其僅支持 10 餘種算法,支持的數據結構也不夠通用,在算法性能方面做的優化也比較少,而且其代碼也很久沒有更新。所以,我們放棄了基於舊版 FlinkML 進行改進、升級的想法,決定基於 Flink 重新設計研發機器學習算法庫,隨後發展為現在的 Alink。

在 Alink 發展的過程中,我們一直與 Flink 社區緊密關聯,在每年的 Flink Forward 大會上匯報我們的進展,共同探討技術問題,獲取反饋和建議。隨著 Alink 功能的不斷增強和完善,社區中歡迎 Alink 進行開源的呼聲日益高漲,我們可開始和 Flink 社區更緊密聯繫,推動開源 Alink 的代碼進入 FlinkML。

與此同時,社區中更多的人意識到舊版 FlinkML 的問題,決定整個廢棄掉舊版 FlinkML,建設新版 FlinkML。我們積極參加新版 FlinkML API 的設計,分享 Alink API 設計的經驗;Alink 的 Params 等概念被社區採納;之後開始為新版 FlinkML 貢獻算法實現代碼,已提交了 40 餘個 PR,包括算法基礎框架、基礎工具類及若干算法實現。

Alink 包含了非常多的機器學習算法,在向 FlinkML 貢獻的過程中,需要社區 commiter 的討論設計與審查代碼,這個過程有助於代碼的精益求精,但由於社區 commiter 的資源有限,代碼完全貢獻到 FlinkML 的過程會持續很長時間。這時,我們不得不考慮是否有其他方式,可以讓用戶先用起來,Alink 單獨開源是個很好的解決方式,它與向 FlinkML 繼續貢獻算法實現,可以同時進行。用戶的使用反饋也有助於我們更好的改進算法實現。此想法獲得了社區的支持,獲得了公司內領導和同事的支持,在 Flink Forword Asia 2019 大會上,宣布了 Alink 開源。

圓桌 | Flink SQL 之 2020:捨我其誰

解說嘉賓:伍翀(雲邪),Apache Flink PMC,阿里巴巴技術專家。

「Q」:demo 裡的 catalog 裡表的元數據是基於內存的還是持久化到外部存儲的?

「A」demo 裡有註冊了兩個 catalog,一個 default catalog(內存),一個 hive catalog(持久化),兩種 catalog 都能存批的表和流的表(其實 Flink SQL 不區分流和批的表)

「Q」:本案例跟您上一次(2020年2月份)講的 flink SQL 案例 中用到的特性有什麼不一樣嗎?

「A」本次 demo 覆蓋的 feature 更全,包括 4 種 join,流批一致性,CEP 等等。

圓桌 | Apache Flink 誤用之痛

解說嘉賓:孫金城(金竹),Apache Member,Apache Flink PMC,阿里巴巴高級技術專家。

「Q」:Flink 窗口計算,heap 狀態存取消耗很多 cpu,對比 spark 相同邏輯窗口計算多耗很多 cpu,請問有沒有優化方案?

「A」這個要看具體的場景,需要更細緻的場景說明一下?一般的優化方法如下:

儘量用增量聚合替代全量聚合[1]。不僅減小 state 的大小,而且能在數據抵達窗口時就開始計算。

注意下 Type 是否都能被 Flink 識別,否則序列化反序列化會用默認的 Kryo,導致序列化反序列化加大 cpu 開銷[2]。可以配上`env.getConfig().disableGenericTypes();` 來禁用 Kryo,驗證下是否類型都被Flink識別了。


[1] https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/operators/windows.html#processwindowfunction-with-incremental-aggregation
[2] https://ci.apache.org/projects/flink/flink-docs-stable/dev/types_serialization.html#data-types-serialization

「Q」:請問多個窗口級聯相同的 keyby 可以使用 datastreamutil 嗎?多個 key 特別長有沒有方法優化?

「A」

1.可以用 DataStreamUtil 來級聯,避免多次 shuffle。

2.業務上如果有辦法優化 key 的長度是最好的,比如減少欄位數;或者抽取指定長度或位置的數據作為 key。其次,技術上可以將 key hash 下,比如取 md5,但是這個會帶來多餘的 cpu 損耗,需要和 key 偏長而帶來的網絡或 io 損耗來權衡,看哪個代價更高。

圓桌 | Uber :使用 Flink CEP 進行地理情形檢測的實踐

解說嘉賓:付典,Apache Flink Committer,阿里巴巴技術專家。

「Q」:CEP 一般怎麼調優性能?

「A」Flink CEP 裡,規則的複雜程度對於性能影響很大,所以如果遇到性能問題,可以從是否可以從業務的角度簡化規則的角度來優化

「Q」:那個不同的 key 的窗口錯開是使用自定義窗口 trigger 嗎?

「A」可以理解為實現了一個自定義的 WindowAssigner,WindowAssigner 針對每個 key 在調用的時候,加入了隨機的因素,從而使得不同的 key 得到的窗口範圍不一樣。

演講 | A deep dive into Flink SQL

分享嘉賓:伍翀(雲邪),Apache Flink PMC,阿里巴巴技術專家。

「Q」:minibatch 減少與 state 交互的方式可以在 datastream 中用嗎?

「A」minibatch 優化目前只在 SQL 層的聚合算子中實現了,DataStream 中用不了。

「Q」:Flink SQL 為了支持流批統一,底層用了大量 CodeGen 技術,同樣的 SQL 在底層 codegen 出不同的代碼,這個 codegen 過程消耗時間嗎?對應批,尤其是 OLAP 這種場景,需要快速出結果的場景,codegen 會佔整個過程時間的比例?

「A」目前 codegen 發生在編譯期,因此只執行一次,所以對於流作業和批作業都還好。不過對於 OLAP 場景確實對於 codegen 以及 代碼編譯都會非常敏感,也是以後的一個優化方向,目前還沒有評測過 codegen 的耗時。

「Q」:stream 模式可能拿不到 statistics 的情況下 join 的優化是怎麼做的?

「A」目前流計算模式的所有優化都是確定性的優化,沒有考慮 statistics。不過批的優化已經考慮了。在拿不到 stats 的時候,我們會有默認的統計值,比如 rowcount=10^8。

演講 | Flink's application at Didi

分享嘉賓:薛康,現任滴滴技術專家,實時計算負責人。畢業於浙江大學,曾任百度高級研發工程師,對大數據生態建設有豐富經驗。

「Q」:能講一下 streamsql 在線 debug 功能實現原理嗎?

「A」解析 SQL,替換 source 和 sink 為文件和標準輸出,然後正常執行 DML,把結果列印到標準輸出,展示在平臺上。

「Q」:sql IDE 中寫的 sql ,血緣關係是怎麼實現的?

「A」每個 connector 會上報連接的數據源信息,比如 kafka 集群、topic等,作為指標上報到 kafka,然後存入 druid,由平臺串聯各個環節,組成完整鏈路。

「Q」:想問下怎麼監控各個 flink 集群中作業的運行狀態,類似於 flink-web 上的每個作業狀態(運行或失敗)。

「A」定期通過 yarn api 拿到每個 app 的 JM 地址,通過 JM 的 restful API 拿到正在運行的 job 信息,判斷每個 job 的啟動時間,如果在兩次判斷之間,說明期間有過重啟,累積一定次數就可以報警。注意判斷剛提交的情況。

「Q」:kafka table 的元數據管理,group.id,start-mode 這種運行時參數怎麼持久化?還是只保存靜態的 kafka connection 信息 / schema 信息,group.id/start-mode 等作為表參數傳入?

「A」確實,只保存靜態信息,比較個性化的運行時信息作為參數,通過 set key=value 的形式作為 job 的一部分一起提交。

演講 | Data Warehouse, Data Lakes, What's Next?

分享嘉賓:金曉軍(仙隱),阿里巴巴高級技術專家。

「Q」:hologres 能支持高性能的更新操作來實現 Flink RetractSink 嗎?

「A」可以支持。其實如果用了 hologres,直接存明細就好了,大部分場景不需要做預聚合,需要的時候直接查詢。

「Q」:hologres 大數據量的查詢效率如何?能支持更新刪除操作不?

「A」可以支持,目前線上有萬億級別的表做多維分析,能夠在200ms以內算出結果。hologres 支持更新和刪除。

「Q」:hologres 相較於現在社區的數據湖框架 hudi,delta 和 iceberg 的差異點是什麼?

「A」

1. hologres 是數據 ingestion 實時生效,而目前開源方案是 mini-batch,類似於flink和 spark streaming 的區別。

2. Hologres 本身是提供服務能力,可以直接給線上應用提供服務,更高的SLA。

3. hologres 能提供高 qps 的查詢能了,可以直接作為 flink 的維表。

演講 | 終於等到你:PyFlink + Zeppelin

分享嘉賓:

「Q」:既然定位在全面整合 Python,那麼加強 Jupyter notebook 就好了吧,Zeppelin vs Jupyter怎麼考慮?

「A」首先 PyFlink 會在 Zeppelin 和 Jupyter 中都會進行支持,目前是 Zeppelin走在前面。Zeppelin vs Jupyter 來講 Zeppelin更加側重大數據的計算場景, Jupyter 更貼合機器學習的場景,Zeppelin 可以多租戶企業級使用,Jupyter 更適合單用戶場景。

「Q」:flink on zeppelin 的最佳應用場景有哪些?

「A」批流計算的 ETL 和數據分析,適合用 flink sql,pyflink 和 table api。

「Q」:Zeppelin 對 K8s 的支持目前如何,社區有這塊的規劃嗎?另外 Zeppelin on K8s 為啥選擇使用 Pod 來部署 Zeppelin Server 而不是 statefulset 或者 deployment 呢?

「A」這塊正在做,依賴於 flink 對 k8s 的支持,預計 zeppelin 0.9 + flink 1.11 可以完美支持 k8s。

Production-Ready Flink and Hive Integration - what story you can tell now?

解說嘉賓:李銳(天離),Apache Hive PMC,阿里巴巴技術專家。

「Q」:既然有 hive 了,也有好用的 Hive 客戶端工具,比如 dbvis。如果公司業務是使用 hive 做離線批查詢,值得再通過其他框架這樣整合嗎?我直接使用 dbvis 來做 hive 分析不就好了?
疑問:Hive 是批分析工具,有必要強行和流整合嗎?專工具專用是不是更好些?

「A」還是有不少用戶需要對 hive 做實時化改進的,比如實時寫入,或者通過 presto、impala 等做交互式查詢。Flink 與 Hive 整合可以完全是批的模式,獲取比 Hive 原有批處理更好的性能。另一方面我們也觀察到有用戶希望能夠實時的消費寫入 Hive 的數據,這種情況就需要跟流整合了。

「Q」:1.10 中可以在 hivecatalog 上建 kafka 表,是不是已經可以接 kafka 數據寫人 hive 表中了(及批流已經統一了)?

「A」不是的,1.10 只是通過 hive catalog 來保存 kafka 表的元數據,但寫入實際數據的時候還是只支持批式的寫入。流式寫入 hive 表要 1.11 才支持。

https://shimo.im/sheets/twgyxGh9hqy6DHYk/MODOC/直播回顧及 Flink 社區學習資料大禮包下載請點擊「閱讀原文」~

相關焦點

  • 雲解答|草稿:我在這兒等著你回來
    科寶,我上次編輯了一半保存的科技需求找不到啦! 別慌,那你保存了嗎? 好啦,現在草稿在哪找都清楚了嗎?科寶溫馨提醒,所有發過的使用攻略,都可在公眾號底部菜單欄中點擊【關於我們】-【使用攻略】查看。
  • 關於內分泌失調的幾種常見提問和解答
    那麼,在平時關於內分泌失調的幾種常見疑問和解答有哪些呢? 提問一:什麼是內分泌失調? 解答:內分泌失調,一般會出現以下症狀。1,肌膚惡化。
  • 怎樣做好一場PPT演講?6個ppt演講技巧,讓你的演講驚豔全場
    本篇,唐歌為你分享的主題是:怎樣做好ppt演講?6個ppt演講技巧,讓你的演講驚豔全場。下面的部分,將從演講前內容準備,演講ppt製作,ppt演講技巧,注意事項四個方面展開,相信完整看全文,一定會讓你有所收穫。
  • PPT也能翻出新花樣?畫個情緒小人為自己代言
    感覺以後都不用PS了,對我這非設計類小夥伴,簡直不要太美膩)!言歸正傳,我為什麼想要摸索一套自己的情緒小人?其實之前也有說過,有時候情緒表情沒素材,搜索其實也很費勁,有些下載還需要付費(就說是不是把!),而且對PPT也相對熟練了。就尋思著預期不斷的尋找,不如自己繪製個小人兒,然後運用到自己的知識卡片中去。
  • 郭麒麟提問的冷知識被百度App解答了
    郭麒麟提問的冷知識被百度App解答了 2020年04月23日 18:25作者:網絡編輯:王動 如果經常下廚房做菜的話,一定會發現,很多菜都太容易長芽了,比如土豆、紅薯、花生甚至是經常要用的輔料蔥姜蒜等等。
  • 十個最讓你拉風的PPT小技巧
    在「工具→選項→編輯→撤銷/恢復操作步數」選項卡上,輸入100甚至150,就可以延長後悔期限啦!第三招:「快速GPS精準定位」PPT正在放映中,你總共準備了10張PPT,講到第9張的時候,突然要調用第3張PPT上製作的一個圖表數據進行輔助說明,怎麼辦?先退出放映再把滑鼠滾輪拖到第3張上?太麻煩了,浪費時間。
  • 網友提問:18歲沒開寫輪眼正常麼,沒想到醫生們回答得一本正經
    之前看到有朋友吐槽,說有網友在某些醫療平臺提問:「18歲沒開萬花筒寫輪眼正常麼」,類似的提問還有諸如「18歲了還沒覺醒替身能力正常麼」、「30歲了還沒成為魔法師正常麼」一類的,如果了解的朋友肯定知道,這是提問者在搞笑,結果沒想到,醫生們卻回答得一本正經。
  • 發布會全程PPT做講解...這年頭不會PPT都不好意思出軌了!
    今兒又有大料啦!!!看看記者會上的陶喆,介個黯然神傷~介個滿臉懊悔喲。。。這年頭不會做ppt都不好意思出軌了~上月29日,陶喆被爆出軌!→「你們都是想搞破壞!」
  • 如何用一招讓你的ppt設計水平提高三個檔次
    在ppt製作過程中圖片是必不可少的元素,我們看到的很多精美的ppt頁面,最吸引眼球的一定是酷炫的圖片,如果能夠把圖片玩出水準的話,能夠極大提高我們的ppt設計水平,今天我就來分析一下ppt圖片的幾種創意玩法:一、布爾運算
  • 飽受PPT折磨?送你6個免費模板搜索網站
    網上的PPT資源多如牛毛,自己篩選十分費勁,這裡幫你挑好了6個超好用的秘密武器,記得收藏。 1、Slidesgo 這裡面的模板都是國外的,風格偏向極簡。不需要翻牆也能直接訪問。比較特別的是還有醫療風的PPT模板。
  • 18個令人尷尬的觀眾提問環節,點進來看大咖們的機智應對
    他問姜文為什麼每部電影的主角結尾都是一個人?姜文說:誰最後不是一個人?誰一直都是一個人。見到她請幫我帶個好,謝謝!」,有個男生站起來:(大意)你跟黃耀明什麼關係?我相信所有觀眾的情緒都被這位奇葩觀眾影響到了,主持人西樓塵老師幾次想打斷他的提問但都沒成功,最後張律接過話筒不緊不慢地說:謝謝你的支持,我不擔心這個問題,今天在座的不就都是來看我電影的嗎?
  • 7個免費PPT模板網站,遠離撞P的尷尬
    我們知道  在座的大多數腦瓜和我們一樣  除了發工資的那一天有點錢  常年都是囊中羞澀  所以  今天我就獻7個  01  PPT超級市場  http://ppt.sotary.com/web/wxapp/
  • PPT模板怎麼找?送上6個網站和2個搜索技巧!
    比如我這裡還想要製作一個具有 5 個分支的樹狀流程圖。這時候,我們就可以在 iSlide 的「圖示庫」裡找到對應資源,插入即可!發現沒,原本紅色的頁面,已經自動匹配當前的主題色啦,而且版式非常漂亮。http://www.officeplus.cn/Template/Home.shtml微軟Office官方網站,上面不僅有PPT模板,還有Word、Excel模板,甚至還有很多高質量的圖片。
  • 60個炫光閃紅視頻素材
    麻煩大家幫忙點一下文章下面的廣告啦,這樣我也更有動力繼續分享好東東啦
  • 招招有料:10個最讓你拉風的PPT小技巧
    在「工具→選項→編輯→撤銷/恢復操作步數」選項卡上,輸入100甚至150,就可以延長後悔期限啦!PPT正在放映中,你總共準備了10張PPT,講到第9張的時候,突然要調用第3張PPT上製作的一個圖表數據進行輔助說明,怎麼辦?先退出放映再把滑鼠滾輪拖到第3張上?太麻煩了,浪費時間。直接按PPT的張數「3」,再按Enter,就可以完成「定位追蹤」了。
  • 騰格爾也有個站了!本尊發出靈魂提問:什麼是個站?
    半島全媒體記者 仲維莉10月15日,騰格爾首席個站首次曬出騰格爾的機場圖,並配文:「我所有的珍藏、所有夢想。都比不上你在我心中的份量。」結果引發騰格爾本尊轉發,靈魂提問:「什麼是個站?」這一發文直接衝上熱搜,並引來不少網友圍觀。
  • 五月天瑪莎74個啦 網友:拜託公布解答
    記者田暐瑋/綜合報導臉書近來掀起「打一句有聲音的句子」挑戰,意即要寫出一段「念出來馬上就能哼出旋律」的句子,除了魏如萱、許茹芸等人跟玩,五月天瑪莎也跟上熱潮,在臉書打出3段句子,但全是「啦」帶過,完全沒有其他字眼提示,3段總計有74個「啦」,讓粉絲絞盡腦汁崩潰:「到底什麼歌啦!」
  • 威士忌·深一度初階篇第二集|精煉100個新世代品鑑家真實提問
    「閱藏家無數」的挑桶協鑑大師盧磬聲先生,在資深威士忌愛好者眼中以靠譜著稱,所以本集提問來源是由將近1000次威士忌品鑑對談中,由100個真實提問裡精煉梳理出與產區相關的初階問題,來為經常開瓶品鑑的同好朋友們逐一進行深一度解答。
  • 好多真的不懂怎麼提問、加好友與請教
    其實這個問題之前的文章裡面提過,可能不夠明顯,在重新說一次吧~今天我的小社群裡發生了一件小事:有位朋友提出了個問題:「一般數據去哪能搜到?」,其實我是沒有get到關鍵點的,然後有位熱心的朋友就回答了一下,後面進一步問了下,才大概給了個答案,雖然我不知道這次提問對他有沒有效。
  • 問題解答-長著人臉的綠色蜘蛛是什麼?
    是古老的魚類,最早在4億2千萬年前的志留紀就已經出現,至今已經演化出超過400個不同的種。因此,大多數的鯊魚都必須不斷的遊動,讓海水進入口中,經過鰓進行氣體交換後,再從鰓裂外流進去。名人推薦偉大的自然影像有一個共同點:它們都是刻骨銘心的。