2013-09-30 32 views
2

我目前正在開發一個項目,我需要將數據批量導入Hadoop集羣。需要導入到Hadoop的數據駐留在SATA磁盤上。需要導入的數據是Encase取證磁盤映像(E01)。我創建了一個應用程序,從這些圖像中提取文件並將這些文件導入到Hadoop中,但這很好,但我需要手動啓動該過程。如何在Linux下使用Java插入新的SATA驅動器?

我想通過熱插拔SATA驅動器並自動啓動提取過程來自動執行此過程。我用Java寫了我的程序,並且由於我用來分析圖像的一些外部庫,它需要這樣。我在互聯網上搜索了一個解決方案,使用Java來檢測新插入的驅動器,但是我發現哪些庫可以檢測USB驅動器或使用udev規則來啓動一個進程(我可以使用它但更喜歡Java解決方案)

有沒有人知道我所描述的東西是否存在?或者是否有人可以將我指向正確的方向?這將非常感謝!

差點忘了......我用ubuntu 12.04 Server Edition作爲我的操作系統。

+3

我不是任何Java專家,但是這種機制的存在似乎對我非常懷疑。你實際上需要一個Java API來udev,或者內核本身。當然,我想你也可以用JNI來做... –

+0

我會記住:輪詢掛載點,JNotify,或者我認爲新的Java7文件IO可能會有所幫助。 – PeterMmm

+0

整個服務器是否受您控制,還是您需要能夠將此應用程序安裝在別人的機器上? – chrylis

回答

4

udisks是一個D-Bus API,提供關於媒體插入和刪除的信息(包括通知),您可以使用dbus-java訂閱通知。

或者,您可以讓Java應用程序在localhost套接字上偵聽並編寫一個udev規則,該規則通過套接字發送適當的事件信息。

+0

服務器完全在我的控制之下。我快速瀏覽了dbus-java,它似乎是我可以使用的.tnx! – Martijn

相關問題