chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

剖析Spark的兩種核心Shuffle

數據分析與開發(fā) ? 來源:五分鐘學大數據 ? 作者: 園陌 ? 2021-10-11 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在 MapReduce 框架中, Shuffle 階段是連接 Map 與 Reduce 之間的橋梁, Map 階段通過 Shuffle 過程將數據輸出到 Reduce 階段中。由于 Shuffle 涉及磁盤的讀寫和網絡 I/O,因此 Shuffle 性能的高低直接影響整個程序的性能。Spark 也有 Map 階段和 Reduce 階段,因此也會出現(xiàn) Shuffle 。

Spark Shuffle

Spark Shuffle 分為兩種:一種是基于 Hash 的 Shuffle;另一種是基于 Sort 的 Shuffle。先介紹下它們的發(fā)展歷程,有助于我們更好的理解 Shuffle:

在 Spark 1.1 之前, Spark 中只實現(xiàn)了一種 Shuffle 方式,即基于 Hash 的 Shuffle 。在 Spark 1.1 版本中引入了基于 Sort 的 Shuffle 實現(xiàn)方式,并且 Spark 1.2 版本之后,默認的實現(xiàn)方式從基于 Hash 的 Shuffle 修改為基于 Sort 的 Shuffle 實現(xiàn)方式,即使用的 ShuffleManager 從默認的 hash 修改為 sort。在 Spark 2.0 版本中, Hash Shuffle 方式己經不再使用。

Spark 之所以一開始就提供基于 Hash 的 Shuffle 實現(xiàn)機制,其主要目的之一就是為了避免不需要的排序,大家想下 Hadoop 中的 MapReduce,是將 sort 作為固定步驟,有許多并不需要排序的任務,MapReduce 也會對其進行排序,造成了許多不必要的開銷。

在基于 Hash 的 Shuffle 實現(xiàn)方式中,每個 Mapper 階段的 Task 會為每個 Reduce 階段的 Task生成一個文件,通常會產生大量的文件(即對應為 M*R 個中間文件,其中, M 表示 Mapper階段的 Task 個數, R 表示 Reduce 階段的 Task 個數) 伴隨大量的隨機磁盤 I/O 操作與大量的內存開銷。

為了緩解上述問題,在 Spark 0.8.1 版本中為基于 Hash 的 Shuffle 實現(xiàn)引入了 ShuffleConsolidate 機制(即文件合并機制),將 Mapper 端生成的中間文件進行合并的處理機制。通過配置屬性 spark.shuffie.consolidateFiles=true,減少中間生成的文件數量。通過文件合并,可以將中間文件的生成方式修改為每個執(zhí)行單位為每個 Reduce階段的 Task 生成一個文件。

執(zhí)行單位對應為:每個 Mapper 端的 Cores 數/每個 Task分配的 Cores 數(默認為 1) 。最終可以將文件個數從 MR 修改為 EC/T*R,其中,E 表示 Executors 個數, C 表示可用 Cores 個數, T 表示 Task 分配的 Cores 數。

Spark1.1 版本引入了 Sort Shuffle:

基于 Hash 的 Shuffle 的實現(xiàn)方式中,生成的中間結果文件的個數都會依賴于 Reduce 階段的 Task 個數,即 Reduce 端的并行度,因此文件數仍然不可控,無法真正解決問題。為了更好地解決問題,在 Spark1.1 版本引入了基于 Sort 的 Shuffle 實現(xiàn)方式,并且在 Spark 1.2 版本之后,默認的實現(xiàn)方式也從基于 Hash 的 Shuffle,修改為基于 Sort 的 Shuffle 實現(xiàn)方式,即使用的 ShuffleManager 從默認的 hash 修改為 sort。

在基于 Sort 的 Shuffle 中,每個 Mapper 階段的 Task 不會為每 Reduce 階段的 Task 生成一個單獨的文件,而是全部寫到一個數據(Data)文件中,同時生成一個索引(Index)文件, Reduce 階段的各個 Task 可以通過該索引文件獲取相關的數據。

避免產生大量文件的直接收益就是降低隨機磁盤 I/0 與內存的開銷。最終生成的文件個數減少到 2M ,其中 M 表示 Mapper 階段的 Task 個數,每個 Mapper 階段的 Task 分別生成兩個文件(1 個數據文件、 1 個索引文件),最終的文件個數為 M 個數據文件與 M 個索引文件。因此,最終文件個數是 2M 個。

從 Spark 1.4 版本開始,在 Shuffle 過程中也引入了基于 Tungsten-Sort 的 Shuffie 實現(xiàn)方式,通 Tungsten 項目所做的優(yōu)化,可以極大提高 Spark 在數據處理上的性能。(Tungsten 翻譯為中文是鎢絲)

注:在一些特定的應用場景下,采用基于 Hash 實現(xiàn) Shuffle 機制的性能會超過基于 Sort 的 Shuffle 實現(xiàn)機制。

一張圖了解下 Spark Shuffle 的迭代歷史:

f5805b64-2a07-11ec-82a8-dac502259ad0.png

Spark Shuffle 迭代歷史

為什么 Spark 最終還是放棄了 HashShuffle ,使用了 Sorted-Based Shuffle?

我們可以從 Spark 最根本要優(yōu)化和迫切要解決的問題中找到答案,使用 HashShuffle 的 Spark 在 Shuffle 時產生大量的文件。當數據量越來越多時,產生的文件量是不可控的,這嚴重制約了 Spark 的性能及擴展能力,所以 Spark 必須要解決這個問題,減少 Mapper 端 ShuffleWriter 產生的文件數量,這樣便可以讓 Spark 從幾百臺集群的規(guī)模瞬間變成可以支持幾千臺,甚至幾萬臺集群的規(guī)模。

但使用 Sorted-Based Shuffle 就完美了嗎,答案是否定的,Sorted-Based Shuffle 也有缺點,其缺點反而是它排序的特性,它強制要求數據在 Mapper 端必須先進行排序,所以導致它排序的速度有點慢。好在出現(xiàn)了 Tungsten-Sort Shuffle ,它對排序算法進行了改進,優(yōu)化了排序的速度。Tungsten-SortShuffle 已經并入了 Sorted-Based Shuffle,Spark 的引擎會自動識別程序需要的是 Sorted-BasedShuffle,還是 Tungsten-Sort Shuffle。

下面詳細剖析每個 Shuffle 的底層執(zhí)行原理:

一、Hash Shuffle 解析

以下的討論都假設每個 Executor 有 1 個 cpu core。

1. HashShuffleManager

shuffle write 階段,主要就是在一個 stage 結束計算之后,為了下一個 stage 可以執(zhí)行 shuffle 類的算子(比如 reduceByKey),而將每個 task 處理的數據按 key 進行“劃分”。所謂“劃分”,就是對相同的 key 執(zhí)行 hash 算法,從而將相同 key 都寫入同一個磁盤文件中,而每一個磁盤文件都只屬于下游 stage 的一個 task。在將數據寫入磁盤之前,會先將數據寫入內存緩沖中,當內存緩沖填滿之后,才會溢寫到磁盤文件中去。

下一個 stage 的 task 有多少個,當前 stage 的每個 task 就要創(chuàng)建多少份磁盤文件。比如下一個 stage 總共有 100 個 task,那么當前 stage 的每個 task 都要創(chuàng)建 100 份磁盤文件。如果當前 stage 有 50 個 task,總共有 10 個 Executor,每個 Executor 執(zhí)行 5 個 task,那么每個 Executor 上總共就要創(chuàng)建 500 個磁盤文件,所有 Executor 上會創(chuàng)建 5000 個磁盤文件。由此可見,未經優(yōu)化的 shuffle write 操作所產生的磁盤文件的數量是極其驚人的。

shuffle read 階段,通常就是一個 stage 剛開始時要做的事情。此時該 stage 的每一個 task 就需要將上一個 stage 的計算結果中的所有相同 key,從各個節(jié)點上通過網絡都拉取到自己所在的節(jié)點上,然后進行 key 的聚合或連接等操作。

由于 shuffle write 的過程中,map task 給下游 stage 的每個 reduce task 都創(chuàng)建了一個磁盤文件,因此 shuffle read 的過程中,每個 reduce task 只要從上游 stage 的所有 map task 所在節(jié)點上,拉取屬于自己的那一個磁盤文件即可。

shuffle read 的拉取過程是一邊拉取一邊進行聚合的。每個 shuffle read task 都會有一個自己的 buffer 緩沖,每次都只能拉取與 buffer 緩沖相同大小的數據,然后通過內存中的一個 Map 進行聚合等操作。聚合完一批數據后,再拉取下一批數據,并放到 buffer 緩沖中進行聚合操作。以此類推,直到最后將所有數據到拉取完,并得到最終的結果。

HashShuffleManager 工作原理如下圖所示:

f5bf1dae-2a07-11ec-82a8-dac502259ad0.png

未優(yōu)化的HashShuffleManager工作原理

2. 優(yōu)化的 HashShuffleManager

為了優(yōu)化 HashShuffleManager 我們可以設置一個參數:spark.shuffle.consolidateFiles,該參數默認值為 false,將其設置為 true 即可開啟優(yōu)化機制,通常來說,如果我們使用 HashShuffleManager,那么都建議開啟這個選項。

開啟 consolidate 機制之后,在 shuffle write 過程中,task 就不是為下游 stage 的每個 task 創(chuàng)建一個磁盤文件了,此時會出現(xiàn)shuffleFileGroup的概念,每個 shuffleFileGroup 會對應一批磁盤文件,磁盤文件的數量與下游 stage 的 task 數量是相同的。

一個 Executor 上有多少個 cpu core,就可以并行執(zhí)行多少個 task。而第一批并行執(zhí)行的每個 task 都會創(chuàng)建一個 shuffleFileGroup,并將數據寫入對應的磁盤文件內。

當 Executor 的 cpu core 執(zhí)行完一批 task,接著執(zhí)行下一批 task 時,下一批 task 就會復用之前已有的 shuffleFileGroup,包括其中的磁盤文件,也就是說,此時 task 會將數據寫入已有的磁盤文件中,而不會寫入新的磁盤文件中。

因此,consolidate 機制允許不同的 task 復用同一批磁盤文件,這樣就可以有效將多個 task 的磁盤文件進行一定程度上的合并,從而大幅度減少磁盤文件的數量,進而提升 shuffle write 的性能。

假設第二個 stage 有 100 個 task,第一個 stage 有 50 個 task,總共還是有 10 個 Executor(Executor CPU 個數為 1),每個 Executor 執(zhí)行 5 個 task。那么原本使用未經優(yōu)化的 HashShuffleManager 時,每個 Executor 會產生 500 個磁盤文件,所有 Executor 會產生 5000 個磁盤文件的。但是此時經過優(yōu)化之后,每個 Executor 創(chuàng)建的磁盤文件的數量的計算公式為:cpu core的數量 * 下一個stage的task數量,也就是說,每個 Executor 此時只會創(chuàng)建 100 個磁盤文件,所有 Executor 只會創(chuàng)建 1000 個磁盤文件。

這個功能優(yōu)點明顯,但為什么 Spark 一直沒有在基于 Hash Shuffle 的實現(xiàn)中將功能設置為默認選項呢,官方給出的說法是這個功能還欠穩(wěn)定。

優(yōu)化后的 HashShuffleManager 工作原理如下圖所示:

f600ec5c-2a07-11ec-82a8-dac502259ad0.png

優(yōu)化后的HashShuffleManager工作原理

基于 Hash 的 Shuffle 機制的優(yōu)缺點

優(yōu)點:

可以省略不必要的排序開銷。

避免了排序所需的內存開銷。

缺點:

生產的文件過多,會對文件系統(tǒng)造成壓力。

大量小文件的隨機讀寫帶來一定的磁盤開銷。

數據塊寫入時所需的緩存空間也會隨之增加,對內存造成壓力。

二、SortShuffle 解析

SortShuffleManager 的運行機制主要分成三種:

普通運行機制;

bypass 運行機制,當 shuffle read task 的數量小于等于spark.shuffle.sort.bypassMergeThreshold參數的值時(默認為 200),就會啟用 bypass 機制;

Tungsten Sort 運行機制,開啟此運行機制需設置配置項 spark.shuffle.manager=tungsten-sort。開啟此項配置也不能保證就一定采用此運行機制(后面會解釋)。

1. 普通運行機制

在該模式下,數據會先寫入一個內存數據結構中,此時根據不同的 shuffle 算子,可能選用不同的數據結構。如果是 reduceByKey 這種聚合類的 shuffle 算子,那么會選用 Map 數據結構,一邊通過 Map 進行聚合,一邊寫入內存;

如果是 join 這種普通的 shuffle 算子,那么會選用 Array 數據結構,直接寫入內存。接著,每寫一條數據進入內存數據結構之后,就會判斷一下,是否達到了某個臨界閾值。如果達到臨界閾值的話,那么就會嘗試將內存數據結構中的數據溢寫到磁盤,然后清空內存數據結構。

在溢寫到磁盤文件之前,會先根據 key 對內存數據結構中已有的數據進行排序。排序過后,會分批將數據寫入磁盤文件。默認的 batch 數量是 10000 條,也就是說,排序好的數據,會以每批 1 萬條數據的形式分批寫入磁盤文件。

寫入磁盤文件是通過 Java 的 BufferedOutputStream 實現(xiàn)的。BufferedOutputStream 是 Java 的緩沖輸出流,首先會將數據緩沖在內存中,當內存緩沖滿溢之后再一次寫入磁盤文件中,這樣可以減少磁盤 IO 次數,提升性能。

一個 task 將所有數據寫入內存數據結構的過程中,會發(fā)生多次磁盤溢寫操作,也就會產生多個臨時文件。最后會將之前所有的臨時磁盤文件都進行合并,這就是merge 過程,此時會將之前所有臨時磁盤文件中的數據讀取出來,然后依次寫入最終的磁盤文件之中。

此外,由于一個 task 就只對應一個磁盤文件,也就意味著該 task 為下游 stage 的 task 準備的數據都在這一個文件中,因此還會單獨寫一份索引文件,其中標識了下游各個 task 的數據在文件中的 start offset 與 end offset。

SortShuffleManager 由于有一個磁盤文件 merge 的過程,因此大大減少了文件數量。比如第一個 stage 有 50 個 task,總共有 10 個 Executor,每個 Executor 執(zhí)行 5 個 task,而第二個 stage 有 100 個 task。由于每個 task 最終只有一個磁盤文件,因此此時每個 Executor 上只有 5 個磁盤文件,所有 Executor 只有 50 個磁盤文件。

普通運行機制的 SortShuffleManager 工作原理如下圖所示:

f63c1034-2a07-11ec-82a8-dac502259ad0.png

普通運行機制的SortShuffleManager工作原理

2. bypass 運行機制

Reducer 端任務數比較少的情況下,基于 Hash Shuffle 實現(xiàn)機制明顯比基于 Sort Shuffle 實現(xiàn)機制要快,因此基于 Sort Shuffle 實現(xiàn)機制提供了一個帶 Hash 風格的回退方案,就是 bypass 運行機制。對于 Reducer 端任務數少于配置屬性spark.shuffle.sort.bypassMergeThreshold設置的個數時,使用帶 Hash 風格的回退計劃。

bypass 運行機制的觸發(fā)條件如下:

shuffle map task 數量小于spark.shuffle.sort.bypassMergeThreshold=200參數的值。

不是聚合類的 shuffle 算子。

此時,每個 task 會為每個下游 task 都創(chuàng)建一個臨時磁盤文件,并將數據按 key 進行 hash 然后根據 key 的 hash 值,將 key 寫入對應的磁盤文件之中。當然,寫入磁盤文件時也是先寫入內存緩沖,緩沖寫滿之后再溢寫到磁盤文件的。最后,同樣會將所有臨時磁盤文件都合并成一個磁盤文件,并創(chuàng)建一個單獨的索引文件。

該過程的磁盤寫機制其實跟未經優(yōu)化的 HashShuffleManager 是一模一樣的,因為都要創(chuàng)建數量驚人的磁盤文件,只是在最后會做一個磁盤文件的合并而已。因此少量的最終磁盤文件,也讓該機制相對未經優(yōu)化的 HashShuffleManager 來說,shuffle read 的性能會更好。

而該機制與普通 SortShuffleManager 運行機制的不同在于:第一,磁盤寫機制不同;第二,不會進行排序。也就是說,啟用該機制的最大好處在于,shuffle write 過程中,不需要進行數據的排序操作,也就節(jié)省掉了這部分的性能開銷。

bypass 運行機制的 SortShuffleManager 工作原理如下圖所示:

f6795520-2a07-11ec-82a8-dac502259ad0.png

bypass運行機制的SortShuffleManager工作原理

3. Tungsten Sort Shuffle 運行機制

Tungsten Sort 是對普通 Sort 的一種優(yōu)化,Tungsten Sort 會進行排序,但排序的不是內容本身,而是內容序列化后字節(jié)數組的指針(元數據),把數據的排序轉變?yōu)榱酥羔様到M的排序,實現(xiàn)了直接對序列化后的二進制數據進行排序。由于直接基于二進制數據進行操作,所以在這里面沒有序列化和反序列化的過程。內存的消耗大大降低,相應的,會極大的減少的 GC 的開銷。

Spark 提供了配置屬性,用于選擇具體的 Shuffle 實現(xiàn)機制,但需要說明的是,雖然默認情況下 Spark 默認開啟的是基于 SortShuffle 實現(xiàn)機制,但實際上,參考 Shuffle 的框架內核部分可知基于 SortShuffle 的實現(xiàn)機制與基于 Tungsten Sort Shuffle 實現(xiàn)機制都是使用 SortShuffleManager,而內部使用的具體的實現(xiàn)機制,是通過提供的兩個方法進行判斷的:

對應非基于 Tungsten Sort 時,通過 SortShuffleWriter.shouldBypassMergeSort 方法判斷是否需要回退到 Hash 風格的 Shuffle 實現(xiàn)機制,當該方法返回的條件不滿足時,則通過 SortShuffleManager.canUseSerializedShuffle 方法判斷是否需要采用基于 Tungsten Sort Shuffle 實現(xiàn)機制,而當這兩個方法返回都為 false,即都不滿足對應的條件時,會自動采用普通運行機制。

因此,當設置了 spark.shuffle.manager=tungsten-sort 時,也不能保證就一定采用基于 Tungsten Sort 的 Shuffle 實現(xiàn)機制。

要實現(xiàn) Tungsten Sort Shuffle 機制需要滿足以下條件:

Shuffle 依賴中不帶聚合操作或沒有對輸出進行排序的要求。

Shuffle 的序列化器支持序列化值的重定位(當前僅支持 KryoSerializer Spark SQL 框架自定義的序列化器)。

Shuffle 過程中的輸出分區(qū)個數少于 16777216 個。

實際上,使用過程中還有其他一些限制,如引入 Page 形式的內存管理模型后,內部單條記錄的長度不能超過 128 MB (具體內存模型可以參考 PackedRecordPointer 類)。另外,分區(qū)個數的限制也是該內存模型導致的。

所以,目前使用基于 Tungsten Sort Shuffle 實現(xiàn)機制條件還是比較苛刻的。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11249

    瀏覽量

    223822
  • 數據
    +關注

    關注

    8

    文章

    7322

    瀏覽量

    94282
  • SPARK
    +關注

    關注

    1

    文章

    108

    瀏覽量

    21162
  • Shuffle
    +關注

    關注

    0

    文章

    5

    瀏覽量

    1898

原文標題:Spark 的兩種核心 Shuffle 詳解(建議收藏)

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    NVIDIA DGX Spark快速入門指南

    NVIDIA DGX Spark 已正式向 AI 開發(fā)者交付,對于剛入手的全新 DGX Spark,該如何進行初始化設置?本篇文章將引導您完成 DGX Spark 首次設置。在初始設置的過程中,您
    的頭像 發(fā)表于 11-17 14:11 ?5506次閱讀
    NVIDIA DGX <b class='flag-5'>Spark</b>快速入門指南

    用PLC實現(xiàn)卷徑計算的兩種算法

    卷徑計算,是動態(tài)計算如鋼卷,紙卷等存料量的一方法,它是實現(xiàn)張力控制和自動充放料、以及甩尾控制的重要前提。卷徑計算目前主流的方法有兩種,一是根據機列速度(產線速度)和和被測卷的轉動角速度求得;另一
    的頭像 發(fā)表于 11-14 16:54 ?1745次閱讀
    用PLC實現(xiàn)卷徑計算的<b class='flag-5'>兩種</b>算法

    負壓法 vs 正壓法:手機外殼氣密性檢測儀的兩種核心技術

    的手機外殼氣密性檢測儀主要采用兩種核心技術:負壓法和正壓法。二者各有優(yōu)劣,適用于不同的生產需求和檢測場景。正壓法是通過向手機外殼內部充入一定壓力的氣體(通常為潔凈空
    的頭像 發(fā)表于 11-05 16:19 ?387次閱讀
    負壓法 vs 正壓法:手機外殼氣密性檢測儀的<b class='flag-5'>兩種</b><b class='flag-5'>核心</b>技術

    ADI GMSL技術兩種視頻數據傳輸模式的區(qū)別

    本文深入介紹GMSL技術,重點說明用于視頻數據傳輸的像素模式和隧道模式之間的差異。文章將闡明這兩種模式之間的主要區(qū)別,并探討成功實施需要注意的具體事項。
    的頭像 發(fā)表于 10-10 13:49 ?2106次閱讀
    ADI GMSL技術<b class='flag-5'>兩種</b>視頻數據傳輸模式的區(qū)別

    兩種TVS有啥不同?

    當我們查看TVS二極管的規(guī)格書,常會看到有以下兩種種引腳功能標識圖:對于初學者,看到感到疑惑,他們一樣嗎?他們有啥區(qū)別?為啥有的個尖頭往外,陽極連在一起,有的個尖頭往里,陰極連在一起?一連三問。EMC小哥根據自己經驗略作分析
    的頭像 發(fā)表于 09-15 20:27 ?705次閱讀
    這<b class='flag-5'>兩種</b>TVS有啥不同?

    兩種散熱路徑的工藝與應用解析

    背景:兩種常見的散熱設計思路 在大電流或高功率器件應用中,散熱和載流能力是PCB設計中必須解決的難題。常見的兩種思路分別是: 厚銅板方案:通過整體增加銅箔厚度(如3oz、6oz甚至更高),增強導熱
    的頭像 發(fā)表于 09-15 14:50 ?644次閱讀

    CMOS 2.0與Chiplet兩種創(chuàng)新技術的區(qū)別

    摩爾定律正在減速。過去我們靠不斷縮小晶體管尺寸提升芯片性能,但如今物理極限越來越近。在這樣的背景下,兩種創(chuàng)新技術站上舞臺:CMOS 2.0 和 Chiplet(芯粒)。它們都在解決 “如何讓芯片更強” 的問題,但思路卻大相徑庭。
    的頭像 發(fā)表于 09-09 15:42 ?860次閱讀

    【BPI-CanMV-K230D-Zero開發(fā)板體驗】+兩種開發(fā)板間的比較

    之所以產生出在兩種開發(fā)板間進行比較的想法,是與當初申請的一個想法相關的就是,就是利用該開發(fā)板來完成一個考生識別的作品。 但在后來的資料分析時才發(fā)現(xiàn),它可能并不具備這方面的基礎。這就有請我們的下一
    發(fā)表于 07-17 21:40

    貼片晶振中兩種常見封裝介紹

    貼片晶體振蕩器作為關鍵的時鐘頻率元件,其性能直接關系到系統(tǒng)運行的穩(wěn)定性。今天,凱擎小妹帶大家聊聊貼片晶振中兩種常見封裝——金屬面封裝與陶瓷面封裝。
    的頭像 發(fā)表于 07-04 11:29 ?1115次閱讀
    貼片晶振中<b class='flag-5'>兩種</b>常見封裝介紹

    兩種感應電機磁鏈觀測器的參數敏感性研究

    模式和發(fā)電模式下對閉環(huán)電壓電流模型磁鏈觀測器和滑模磁鏈觀測器參數敏感性進行了研究,通過仿真和實驗比較了這兩種觀測器對定、轉子電阻及勵磁電感的敏感性。同時還研究了基于這兩種觀測器的模型參考自適應系統(tǒng)
    發(fā)表于 06-09 16:16

    3500W 與6000W 高檔開關電源的剖析

    摘要:剖析了直流輸出48V/70A與350V/10A兩種3500W和48V/112A與350V/17A兩種6000W高檔開關電源的電路設計與元器件應用特點,并提出了有待繼續(xù)分析的問題。 關鍵詞
    發(fā)表于 06-04 17:10

    銣原子鐘與CPT原子鐘:兩種時間標準的區(qū)別

    在物理學的世界中,精密的時間測量是至關重要的。這就需要一個高度準確且穩(wěn)定的時間標準,這就是原子鐘。今天我們將探討兩種重要的原子鐘:銣原子鐘和CPT原子鐘,以及它們之間的主要區(qū)別。首先,我們來了解一下
    的頭像 發(fā)表于 05-22 15:49 ?629次閱讀
    銣原子鐘與CPT原子鐘:<b class='flag-5'>兩種</b>時間標準的區(qū)別

    用TLC2551采外部電壓,只有0和2096兩種值是怎么回事?

    用TLC2551采外部電壓,只有0和2096兩種值是怎么回事?求解決辦法。
    發(fā)表于 02-06 07:31

    覆銅的兩種形式是什么

    在電子電路設計與制造領域,覆銅的實現(xiàn)形式多樣,其中大面積的覆銅和網格銅是最為常見且各具特色的兩種,它們在不同的應用場景下發(fā)揮著關鍵作用。 大面積的覆銅,顧名思義,是指在印刷電路板(PCB)的特定區(qū)域
    的頭像 發(fā)表于 02-04 14:10 ?1031次閱讀

    ADS1259讀取模數轉換結果的時候是否是兩種讀取模式?

    咨詢下ADS1259讀取模數轉換結果的時候是否是兩種讀取模式,一是讀引腳(DIN),一是讀寄存器,讀寄存器的數據是進行數據校驗? 還有不明白的是讀寄存器的內容時,模數轉化后的數據是放在9個寄存器哪幾個里面呢?是否是可以隨意
    發(fā)表于 01-22 07:18