2016-07-07 25 views
1

我們在Azure中運行HDInsight羣集,但它不允許在羣集創建時旋轉邊緣/網關節點。所以我通過安裝spark-shell錯誤:No方案的FileSystem:wasb

echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list 
echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main' >> /etc/apt/sources.list.d/HDP.list 
echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list 
gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD 
gpg -a --export 07513CAD | apt-key add - 
gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893 
gpg -a --export 417A0893 | apt-key add - 
apt-get -y install openjdk-7-jdk 
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 
apt-get -y install hadoop hadoop-hdfs hadoop-yarn hadoop-mapreduce hadoop-client openssl libhdfs0 liblzo2-2 liblzo2-dev hadoop-lzo phoenix hive hive-hcatalog tez mysql-connector-java* oozie oozie-client sqoop flume flume-agent spark spark-python spark-worker spark-yarn-shuffle 

創建這個邊緣/網關節點然後我複製/usr/lib/python2.7/dist-packages/hdinsight_common//usr/share/java//usr/lib/hdinsight-datalake//etc/spark/conf//etc/hadoop/conf/

但是當我運行spark-shell我獲得以下錯誤

java.io.IOException: No FileSystem for scheme: wasb 

下面是完整的堆棧https://gist.github.com/anonymous/ebb6c9d71865c9c8e125aadbbdd6a5bc

我不確定哪個包/ jar在這裏丟失。

任何人有任何線索我做錯了什麼?

感謝

+0

我要尋找一個解決類似的問題。可能的幫助在這裏:http://stackoverflow.com/questions/32264020/unable-to-connect-with-azure-blob-storage-with-local-hadoop – aaronsteers

回答

0

海寧從微軟上一個Apache的Hadoop安裝寫在設置wasb一個優秀的博客文章。

以下是摘要:

  1. 添加hadoop-azure-*.jarazure-storage-*.jar到Hadoop的類路徑

    1.1查找本地安裝的罐子。它位於HDInsight羣集上的/ usr/hdp/current/hadoop-client文件夾中。

    1.2更新HADOOP_CLASSPATH變量在hadoop-env.sh。使用精確的jar名稱作爲java classpath不支持部分通配符。

  2. 更新核心的site.xml

    <property>   
         <name>fs.AbstractFileSystem.wasb.Impl</name>       
         <value>org.apache.hadoop.fs.azure.Wasb</value> 
    </property> 
    
    <property> 
         <name>fs.azure.account.key.my_blob_account_name.blob.core.windows.net</name> 
         <value>my_blob_account_key</value> 
    </property> 
    
    <!-- optionally set the default file system to a container --> 
    <property> 
         <name>fs.defaultFS</name>   
         <value>wasb://[email protected]_blob_account_name.blob.core.windows.net</value> 
    </property> 
    

見具體步驟在這裏: https://github.com/hning86/articles/blob/master/hadoopAndWasb.md

+0

感謝您的建議,但對於特定用例,我不能使用客戶端通過集羣部署部署。 – roy

1

火花殼設置Azure存儲(wasb和wasbs文件)的另一種方法是:

  1. 將azure-storage和hadoop-azure jar複製到spark insta的./jars目錄中llation。
  2. 運行火花殼與參數-jars [逗號與路由分隔的列表的那些罐子例:

    
    $ bin/spark-shell --master "local[*]" --jars jars/hadoop-azure-2.7.0.jar,jars/azure-storage-2.0.0.jar 
    
  3. 添加以下行到火花上下文:

    
    sc.hadoopConfiguration.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem") 
    sc.hadoopConfiguration.set("fs.azure.account.key.my_account.blob.core.windows.net", "my_key") 
    
  4. 運行一個簡單的查詢:

    
    sc.textFile("wasb://[email protected]_account_host/myfile.txt").count() 
    
  5. 享受:)

有了這個設置,你可以很容易地能建立一個Spark應用程序,傳遞參數給「hadoopConfiguration」在當前背景下星火

+0

在他們的代碼示例中使用引號的人是... –

+0

我的不好。我不得不停止使用Mac Notes來節省代碼片段:) –

+0

是的,現在好多了:)而且還有一個非常好的解決方案,從我+1。 –