2016 年 1 月

第 31 卷,第 1 期

本文章是由機器翻譯。

巨量資料 - 使用 HDInsight 進行適用於 .NET 開發人員的即時資料分析

Omid Afnan

不同規模的企業都能夠辨識其資料的大型集合的值開始,以及利用它們的需要。當組織開始巨量資料踏上時,他們通常會開始處理巨量資料資產的批次。這可能表示收集和彙總 Web 記錄資料,使用者會按一下從應用程式、 遙測從物聯網 (IoT) 裝置或主機的其他人或電腦產生的資料。我討論過其中 Hive HDInsight 上使用的發行項中一年前的基本 Web 記錄分析案例 (msdn.com/magazine/dn890370)。不過,實現深入挖掘歷程記錄資料上處理的批次的優點,因為許多組織會遇到即時資料處理的問題及如何收集、 分析和即時的連續資料流處理的問題。

您或許已經猜到,有技術來處理這類需求的巨量資料空間中。Microsoft Azure 平台提供功能強大的巨量資料解決方案,包括 Azure 資料湖和 HDInsight。沒有開放原始碼技術,可讓呼叫 Apache Storm 高度分散的即時分析。它原本就支援在 HDInsight 中,這是 Azure 的管理供應項目 Apache 巨量資料服務。在本文中,我們將引導您完成簡單但功能強大的案例為重要的工具中使用 Storm,若要啟用即時、 連續分析推文資料流處理。

如您所見,Microsoft 更輕鬆開發這類明顯比其他透過功能強大的撰寫和偵錯工具在 Visual Studio 中的目前市場產品。HDInsight Tools for Visual Studio (使用 Azure SDK 的一部分) 提供程式碼的撰寫和偵錯.NET 開發人員熟悉的環境。這些工具讓您更容易一些比簡單編輯器和命令列工具,目前可用的開放原始碼世界中的巨量資料技術搭配使用。HDInsight 的 Storm 完全支援使用 Java 程式設計,Microsoft 也可讓.NET 程式設計人員使用 C# 來撰寫 (及重複使用) 商務邏輯。在本文中的範例將示範這些.NET 功能。

情感追蹤案例

無法新增追蹤和分析浮現的趨勢的案例。新聞、 天氣追蹤和損毀偵測是預先日期的範例雲端運算。不過,趨勢偵測是恰當的其中的領域和小數位數的資料可供分析,範圍也已經 unimaginably 成長定域機組紀元隨著。社交網路一直都為地面情感分析。像 Twitter 之類設為其社交資料可透過 Api,以及像 HDInsight,隨用隨付的巨量資料平台的服務將 within the reach of 大小組織的情感分析。

來計算頻率是最簡單的一種使用 Twitter 情感分析人員關於特定主題或雜湊標記,特在給定的一段時間。當然,這麼做,只是一個句點,假設一分鐘的時間不做為有趣這麼一天每隔一分鐘之間和尋找提高或落在速率。識別正在使用的特定詞彙在尖峰可能適用於偵測趨勢。比方說,偵測暴增或地震相關的詞彙可能提供非常快速區域受到天然災害以及其嚴重性的指示。

為了示範如何做到這點的基本概念,我會逐步引導如何設定會收集來自 Twitter 的資料、 選取某些推文、 計算度量、 將所有項目儲存至儲存體和發行之結果的資料流拓撲。您可以看到如圖所示,在此拓撲 [圖 1。在本文中,我選取要使用簡單的關鍵字比推文。計算的度量是符合選取準則的推文的計數。選取推文放入 [SQL 資料庫,也會發佈到網站上。所有項目是使用 Storm、 SQL Server 和目前可用的網站服務的 Azure 雲端中。此範例之後,我將討論一些可用來解決這種類型的資料流資料分析問題的其他技術。

情感分析拓樸
[圖 1 情感分析拓樸

基本的 Storm

Storm 是 Apache 開放原始碼專案 (storm.apache.org),可允許透過資料流的執行即時的分散式的計算。它是 Hadoop 生態系統的巨量資料處理工具的一部分,且在 HDInsight 中直接支援。Storm 工作會定義為處理由 tuple 的形式的資料流的連接節點的圖表。在 Storm 中的 「 拓撲 」 被指這類圖形。拓撲未完成就像其他查詢一樣,它們會繼續執行直到正在暫止或終止為止。

在 Azure 管理入口網站中,您可以建立新的 HDInsight 叢集,並選擇 Storm 做為類型。這會導致 Azure 幾分鐘內預先載入所有的必要作業系統、 Hadoop 和 Storm 元件的機器的叢集設定。我可以選擇我想、 選擇不同的核心和記憶體大小,並隨時調整向上或向下的節點數目的節點數目。以簡化 Hadoop 體驗,這已經幫我逃過很長的時間和麻煩取得及設定多部電腦相關聯。

Spout 和 bolt 稱為拓撲的元件。Spout 會產生資料流的 tuple,基本上它們是型別和值組的集合。換句話說,spout 會知道如何收集或產生資料,然後將它發出區塊 (chunk) 的程式碼片段。Bolt 是可使用的資料流的程式碼的單位。它們可能處理的資料清除,或計算的統計資料。在這種情況下,它們可能會發出另一個資料流的下游 bolt 的 tuple。其他 bolt 將資料寫到儲存體或另一個系統。

每個元件可以執行許多的平行工作。這是 Storm 的可靠性與延展性的關鍵。我可以指定每個元件的平行處理原則程度和 Storm 將許多工作來執行邏輯中我 spout 或 bolt 配置。Storm 提供容錯功能的管理工作,並自動重新啟動失敗的。最後,給定的拓樸執行上一組是一種本質上執行容器的背景工作處理序。可以加入背景工作,以增加處理容量的拓撲。這些功能提供啟用 Storm 的小數位數和容錯功能的重要特性。

拓樸可以視需要執行整體即時分析案例所需的處理一樣複雜。架構適合重複使用的元件,但它也會建立具挑戰性的管理和部署問題的 spout 和 bolt 數目成長時。Visual Studio 專案的概念是有用的方式,來管理執行個體化拓撲所需的程式碼和組態元件。由於拓撲的概念是基本上圖形在本質上,也有意義,能夠以視覺化方式檢視拓撲開發與系統的作業期間會很有幫助。HDInsight tools for Visual Studio 中所示執行檢視中看到此 [圖 2

監視使用中的 Storm 拓撲的檢視
[圖 2 監視的使用中的 Storm 拓撲檢視

Apache Thrift,是能夠以多種語言實作的服務的開發架構架構 storm。雖然許多開發人員使用 Java 撰寫 spout 和 bolt,它不需要。程式庫的 SCP.Net 封裝推出之後,我可以使用 C# 來開發我的 spout 和 bolt。這個套件包含在 HDInsight Tools for Visual Studio 下載,但是您也可以透過 NuGet 下載。

篩選幾近即時的推文

讓我們看看建置篩選拓樸,請參閱這些組件實際上的運作方式推文資料流。我的範例拓撲組成一個 spout 和三個 bolt。您可以看到這種拓撲中的圖形化檢視 [圖 2, ,Visual Studio 的 HDInsight 工具所示。當提交在 Azure 中執行的 Storm 專案時,Visual Studio 顯示此圖形化檢視並更新其經過一段時間流經系統,以及在任一個節點就會發生任何錯誤狀況的事件數目。

這裡 TwitterSpout 負責提取我想要處理的推文資料流。它是藉由與收集推文的 Twitter Api 互動,並把它們轉換成可以透過拓撲的其他資料流方式處理資料的 tuple。TwitterBolt 挑選資料流,而且可以進行彙總、 計算推文,或結合其他資料來源提取其他資料等。此 bolt 發出新的資料流,可能是新的格式,根據它已執行的商務邏輯。AzureSQLBolt 和 SignalRBroadcastBolt 元件使用此資料流,並寫入資料的部分 Azure 託管的 sql Server 資料庫與 SignalR 網站,分別。

因為我使用 C# 建置風暴解決方案,我可以使用許多現有的程式庫,以協助簡化並加速我的開發。此範例中的兩個金鑰封裝會在 CodePlex 上的 Tweetinvi 程式庫 (bit.ly/1kI9sqV) 和 nuget SCP.Net 程式庫 (bit.ly/1QwICPj)。

SCP.Net 架構可減少許多複雜的程式設計模型風暴處理,並提供封裝大部分的工作,否則我必須以手動方式執行的基底類別。我先從 Microsoft.SCP.ISCPSpout 基底類別繼承。這讓我 spout 所需的三個核心方法: NextTuple、 通知和失敗。NextTuple 根本發出下一步的資料流,或沒有可用的資料。緊密迴圈中呼叫這個方法是大幅改變,並介紹一些睡眠時間,如果沒有任何 tuple 可發出正確的地方。這是一個方法,可以確保最後我不耗用 100%的我的 CPU 循環,拓撲會持續執行。

如果我想要實作保證的訊息處理,例如 「 至少一次 」 語意 (semantics) 我的 tuple,我會使用 Ack 和 Fail 方法來實作 bolt 之間所需的交握。我不在此範例中使用任何重試機制,因此只有 NextTuple 方法實作時,使用程式碼會從私用佇列中的成員 TwitterSpout 類別中取得推文,隨附拓樸。

資料流,則拓撲內會以結構描述發佈 spout 或 bolt 的擷取。這些拓撲中的元件之間的合約,而且也為序列化和還原序列化時將資料傳輸,會使用 SCP.Net 的規則。內容類別用來儲存每個 spout 或 bolt 執行個體的組態資訊。Spout 所發出的 tuple 的結構描述是儲存在內容和 SCP.Net 用來建置元件的連線。

讓我們看看 TwitterSpout 類別,顯示部分中的初始化程式碼 [圖 3

[圖 3 初始化 TwitterSpout 類別

public TwitterSpout(Context context)
{
  this.context = context;
  Dictionary<string, List<Type>> outputSchema =
    new Dictionary<string, List<Type>>();
  outputSchema.Add(Constants.DEFAULT_STREAM_ID,
    new List<Type>() { typeof(SerializableTweet) });
  this.context.DeclareComponentSchema(new ComponentStreamSchema(
    null, outputSchema));
  // Specify your Twitter credentials
  TwitterCredentials.SetCredentials(
    ConfigurationManager.AppSettings["TwitterAccessToken"],
    ConfigurationManager.AppSettings["TwitterAccessTokenSecret"],
    ConfigurationManager.AppSettings["TwitterConsumerKey"],
    ConfigurationManager.AppSettings["TwitterConsumerSecret"]);
  // Setup a Twitter Stream
  var stream = Tweetinvi.Stream.CreateFilteredStream();
  stream.MatchingTweetReceived += (sender, args) => { NextTweet(args.Tweet); };
  // Setup your filter criteria
  stream.AddTrack("China");
  stream.StartStreamMatchingAnyConditionAsync();
}

[圖 3 顯示之內容的 spout 使用傳入的內容在拓樸啟動時初始化。此內容接著會加上結構描述定義的更新。建立我將資料流 (DEFAULT_STREAM) 的類型和清單的所有欄位類型的識別項加入我的 tuple 中的字典物件 — 在此案例中只要 SerializableTweet。現在內容,其中包含結構描述定義中,我必須遵循我發出在此類別中的 tuple 時,以及當我在 TwitterBolt 取用它們。

此程式碼片段的其餘部分會顯示 Twitter 資料流的安裝程式。Tweetinvi 套件提供 REST 和串流 Api,從 Twitter 的抽象概念。編碼的適當認證之後, 我只是具現化我想要使用的來源的類型。如果是資料流的來源,我可以選擇其中一種數種類型,包括篩選取樣或使用者資料流。這些提供簡化的介面來執行關鍵字篩選跨所有推文,取樣隨機的公用推文和追蹤事件相關聯的特定使用者。在這裡,我會使用已篩選的資料流,允許選取的推文中跨所有公用推文,藉由檢查有任何字元集的其中一個多個關鍵字。

此處我執行所要篩選推文的 spout,在因為 Tweetinvi Api 會將此作業程序。我也可以執行 TwitterBolt 元件,以及計算或彙總,我想要操作的推文中的篩選。在 spout 篩選可讓我在早期階段資料流進拓撲的資料量縮小。不過,Storm 的威力在於它可讓我透過向外擴充處理大的磁碟區在拓撲中的任何元件。Storm 提供幾乎線性調整加入資源,讓我能夠使用更多背景工作加入標尺,每當發生瓶頸。HDInsight 支援這種方法,可讓我選擇 [我的叢集和類型的節點時設定好之後,而且稍後將節點加入至它的大小。使用這個擴充方法,我可以建置 Storm 叢集,以處理數百萬事件每秒。我是以執行在我的叢集節點中,需要成本和小數位數之間的取捨謹記在心的數目計費。

只有另一個組件叫出 [圖 3 Tweetinvi 資料流物件,它會尋找符合我準則推文時要呼叫的回呼的註冊。NextTweet 方法是該回呼,而這只是增加先前所述的私用佇列 TwitterSpout 類別中提供的推文:

public void NextTweet(ITweet tweet)
{
  queue.Enqueue(new SerializableTweet(tweet));
}

我的拓樸的 bolt 是以類似的方式編碼。它們衍生自 Microsoft.SCP.ISCPBolt 類別,而且必須實作的 Execute 方法。這裡的 tuple 傳遞泛型 SCPTuple 的型別,而且必須先轉換成正確的型別。然後我可以撰寫 C# 程式碼來執行任何需要的詳細程序。在此情況下我只要使用全域變數,將累積的 bolt,所看到的 tuple 數目的計數,並記錄計數和推文文字。最後,我發出新類型的下游取用 bolt 的 tuple。請看看下面這個程式碼:

public void Execute(SCPTuple tuple)
{
  var tweet = tuple.GetValue(0) as SerializableTweet;
  count++;
  Context.Logger.Info("ExecuteTweet: Count = {0}, Tweet = {1}", count, tweet.Text);
  this.context.Emit(new Values(count, tweet.Text));
}

在 bolt 中,我有時我設定指定輸入和輸出結構描述。格式不完全與先前的結構描述定義 spout 相同。我只是定義另一個稱為 outputSchema 的字典變數,並列出的整數和字串型別之輸出欄位中所示 [圖 4

[圖 4 TwitterBolt 指定輸入和輸出結構描述

public TwitterBolt(Context context, Dictionary<string, Object> parms)
{
  this.context = context;
  Dictionary<string, List<Type>> inputSchema =
    new Dictionary<string, List<Type>>();
  inputSchema.Add(Constants.DEFAULT_STREAM_ID,
    new List<Type>() { typeof(SerializableTweet) });
  Dictionary<string, List<Type>> outputSchema =
    new Dictionary<string, List<Type>>();
  outputSchema.Add(Constants.DEFAULT_STREAM_ID,
    new List<Type>() { typeof(long), typeof(string) });
  this.context.DeclareComponentSchema(
    new ComponentStreamSchema(inputSchema,
    outputSchema));
}

其他 bolt 會依循相同的模式,但是 SQL Azure 和 SignalR 的呼叫特定 Api。最後一個索引鍵的項目是列舉的元件和其連線所定義的拓撲。若要達成此目的中,,則必須在所有 spout 和 bolt 中實作的另一種方法: Get 方法,這只是具現化的內容變數,取得 SCPContext Storm 工作啟動期間呼叫這個類別的物件。SCP.Net 會具現化的子系的 C# 程序,將會啟動您的 C# spout 或 bolt 工作使用下列委派方法:

return new TwitterSpout(context);

Spout 和 bolt 就地之後,我就可以建立拓撲。同樣地,SCP.Net 提供類別和協助程式函數來執行這項操作。我建立一個衍生自 Microsoft.SCP.Topology.TopologyDescriptor 類別並覆寫 GetTopologyBuilder 方法。在這個方法使用類型提供的方法,SetSpout 並 SetBolt 的 TopologyBuilder 的物件。這些方法可讓我指定的名稱和元件的輸入和輸出結構描述。也可以讓我指定要用來初始化的元件和,最重要的若要指定要與目前元件的上游元件的 Get 委派。[圖 5 顯示定義我的拓樸的程式碼。

[圖 5 建立 Twitter AnalysisTopology

namespace TwitterStream
{
  [Active(true)]
  class TwitterTopology : TopologyDescriptor
  {
    public ITopologyBuilder GetTopologyBuilder()
    {
      TopologyBuilder topologyBuilder = new TopologyBuilder(
        typeof(TwitterTopology).Name + DateTime.Now.ToString("-yyyyMMddHHmmss"));
      topologyBuilder.SetSpout(
        typeof(TwitterSpout).Name,
        TwitterSpout.Get,
        new Dictionary<string, List<string>>()
        {
          {Constants.DEFAULT_STREAM_ID, new List<string>(){"tweet"}}
        },
        1);
      topologyBuilder.SetBolt(
        typeof(TwitterBolt).Name,
        TwitterBolt.Get,
        new Dictionary<string, List<string>>()
        {
          {Constants.DEFAULT_STREAM_ID, new List<string>(){"count", "tweet"}}
        },
        1).shuffleGrouping(typeof(TwitterSpout).Name);
      topologyBuilder.SetBolt(
        typeof(SqlAzureBolt).Name,
        SqlAzureBolt.Get,
        new Dictionary<string, List<string>>(),
        1).shuffleGrouping(typeof(TwitterBolt).Name);
      topologyBuilder.SetBolt(
        typeof(SignalRBroadcastBolt).Name,
        SignalRBroadcastBolt.Get,
        new Dictionary<string, List<string>>(),
        1).shuffleGrouping(typeof(TwitterBolt).Name);
      return topologyBuilder;
    }
  }
}

完整的 Twitter 分析專案可以建置 Visual Studio 中使用 Storm 專案類型。此專案方便配置中所示,您需要簡單且熟悉的方式可在 [方案總管中檢視的各種元件 [圖 6。您可以新增元件,例如 bolt 和使用 「 新增 spout |新項目選項從內容功能表中的專案。從 Storm 項目類型選擇將新的檔案,並包含所有必要的方法外框。使用 Visual Studio Storm 專案,我可以將參考加入至程式庫,例如 Tweetinvi,直接或透過 NuGet。提交拓撲至在 Azure 上執行的是從方案總管] 內容功能表中按一下。所有必要的元件會上載到我所選的 HDInsight Storm 叢集並提交拓撲。

提交拓撲,從 [方案總管
[圖 6 提交拓撲,從 [方案總管

我之後送出,請參閱拓撲檢視 [圖 2, ,我可以在此監視我的拓樸的狀態。Storm 可讓我的拓樸,包括啟動、 停用和已清除,做為以及允許的工作重新平衡跨工作者根據延展性參數的數種狀態。我可以從 Visual Studio 中,管理所有這些狀態轉換,以及觀察目前 tuple 的流程。若要調查的詳細資料和偵錯問題的元件,我可以向下鑽研個別的元件,例如 SqlAzureBolt,會顯示錯誤狀況 (紅色外框和拓樸檢視上的標記)。按兩下此 bolt 示範有關 tuple 流程,以及來自 bolt 的錯誤的摘要更詳細的統計資料。您甚至可以按一下錯誤連接埠連結,請移至個別工作的完整的記錄檔,而不需要離開 Visual Studio。

此程式碼,並涵蓋在本文中的簡易拓樸的專案可以在 GitHub 上 MicrosoftBigData 儲存機制下找到。尋找 [HDInsight] 資料夾和 TwitterStream 範例專案。其他文章和範例,您會發現 bit.ly/1MCfsqM

移至更複雜的分析

我所呈現的 Storm 拓撲範例很簡單。有數種方式可以增加強大功能和我在 Storm 中的即時處理的複雜性。

如先前所述,指派給在 HDInsight 的 Storm 叢集的資源數目可以進行調整所需。我可以看到我從 Visual Studio 的執行階段檢視從拓撲中提供的資料的系統效能 [圖 2。這裡我可以看到所發出的 tuple 數目執行程式及工作與延遲的數目。[圖 7 Azure 管理入口網站檢視中,提供進一步的詳細資料相關的節點數目,其型別和核心計數現在是使用中的顯示。根據這些問題,我可以決定我的叢集,再新增更多的監督員 (背景工作) 節點到叢集。此向上延展不需要重新啟動,就會發生在當我觸發重新平衡從我的 Visual Studio 拓樸檢視,或從管理入口網站的分鐘。

Storm 叢集 azure 管理入口網站檢視
[圖 7 管理 Azure 入口網站的 [檢視 Storm 叢集

大部分的分析應用程式會在多個非結構化的巨量資料流上運作。在此情況下,拓撲會包含多個 spout 和 bolt,可讀取多個 spout。這可以表示輕鬆地在拓撲組態 SetBolt 方法引動過程中指定數個輸入。不過,您將會個別 tuple 送達時,在不同的資料流識別碼的更複雜的處理中相同的 bolt 的多個來源的商務邏輯。隨著商業問題的複雜性,很可能也會在處理期間需要關聯式或結構化資料來源。Spout 適用於類似佇列的資料來源時,關聯式資料很容易的 bolt 帶出。同樣地,彈性的實作 bolt,使用 C# 或 Java 可以輕鬆地使用已建立的 Api 或查詢語言的程式碼存取。這裡的複雜性起因於這些呼叫將會對從遠端在叢集中的 Storm 容器從資料庫伺服器的事實。SQL Azure 和 HDInsight 在相同的 Azure 網狀架構上運作,而且互動,但也可以使用雲端架構服務的其他選項。

Storm 執行階段可讓我來設定或調整系統的許多細部行為。許多這類的設定會顯示為可以套用拓樸或工作層級的組態參數。這些可以存取 Microsoft.SCP.Topology.StormConfig 類別中,用來微調整體的大量工作負載。範例包括暫止的每個 spout,計時 tuple 的 tuple 數目上限的設定,以及 spout 睡眠策略。拓撲產生器中進行其他變更拓撲。我的範例拓撲,請在所有元件間的串流處理設定為 「 隨機播放群組 」。 Storm 執行系統可以針對任何給定的元件,而且會建立許多個別的工作。這些工作是獨立的背景工作執行緒可以平行執行的跨核心或 bolt 的工作負載分散到多個資源的容器。我可以控制工作如何從一個 bolt 傳遞至下一步]。藉由選擇隨機分組,指任何 tuple 可以移至下一步 bolt 中的任何背景工作處理序。我也可以選擇其他選項,如 「 欄位分組 」 而造成傳送至相同背景工作根據 tuple 中的特定欄位值的 tuple。此選項可用來控制資料具有狀態,例如推文資料流中特定單字的執行計數的作業流程。

最後,即時分析,系統可能較大的組織內的分析管線的一部分。例如,Web 記錄分析系統很可能有大的批次導向部份處理每日的 Web 服務的記錄檔。這會產生的網站流量摘要,並提供適用於資料科學家模式探索很少彙總的資料。根據這項分析,小組可能會決定建立即時的觸發程序特定行為,例如偵測系統失敗或惡意使用。這個第二個部分需要即時分析記錄檔或遙測資料流處理,但是可能取決於批次系統每日更新的參考資料。這類較大的管線需要能夠計算模型和技術的各種不同工作的同步處理的工作流程管理工具。Azure Data Factory (ADF) 提供工作流程管理系統,原生支援 Azure 的分析和儲存體服務,並且可協調工作,根據輸入的資料可用性。ADF 支援 HDInsight 和 Azure 資料湖分析,以及 Azure 儲存體、 Azure 資料湖儲存體、 Azure SQL Database 與內部部署資料來源之間移動資料。

其他資料流技術

在本文中我會介紹在 HDInsight 中使用 Storm 即時資料流分析的基本概念。當然,Storm 也可以是設定在您自己的資料中心或實驗室機器的叢集上。透過 Hortonworks,Cloudera 或直接從 Apache Storm 發佈可取得。安裝和設定,在這些情況下明顯較費時,但概念和程式碼成品都相同。

Spark (spark.apache.org) 另一個 Apache 專案可用於即時分析,並已取得絕佳的熱門程度。它也支援一般的巨量資料處理,但其支援記憶體中處理和資料流函式的程式庫可高效能即時處理一個有趣的選擇。HDInsight 提供 Spark 叢集類型,您可以嘗試使用這項技術。服務包括 Zeppelin 和 Jupyter notebook 介面可讓您建立查詢,這些語言中的,會看到互動式結果。這些是適用於資料瀏覽和開發查詢時巨量資料集。

即時資料流分析的興趣建置組織工作透過日益複雜的巨量資料分析的案例。在此同時,此空間中的技術繼續成長和成熟,提供新機會深入了解巨量資料。使用 Spark 和 Azure 資料湖分析等技術上尋找這些網頁未來的文章。


Omid Afnan是在分散式的運算系統和相關的開發人員工具鏈的實作上使用 Azure 大數據小組的首席程式經理。他會存在,及在中國運作。與他連絡 omafnan@microsoft.com

衷心感謝以下技術專家對本文的審閱: Asad Khan 和 Ravi Tandon
Ravi Tandon (Microsoft),Asad Khan (Microsoft)

Asad Khan 是著重於透過 Azure HDInsight 服務定域機組中的 Hadoop 供電體驗 Microsoft 巨量資料群組中的首席專案經理。他目前致力於 Spark 和即時分析,透過 Apache Storm。他已在過去的幾年開發下一代的資料存取技術,包括 Hadoop、 OData 和 BI 巨量資料的 microsoft。Asad 保存文憑史丹佛大學

Ravi Tandon 是 Microsoft Azure HDInsight 小組的資深軟體工程師。他從事 Microsoft Azure HDInsight 上 Apache Storm 和 Apache Kafka 供應項目。