Hadoop Common
  1. Hadoop Common
  2. HADOOP-9629

Support Windows Azure Storage - Blob as a file system in Hadoop

    Details

    • Type: Improvement Improvement
    • Status: Patch Available
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      Description

      This JIRA incorporates adding a new file system implementation for accessing Windows Azure Storage - Blob from within Hadoop, such as using blobs as input to MR jobs or configuring MR jobs to put their output directly into blob storage.

      High level design

      At a high level, the code here extends the FileSystem class to provide an implementation for accessing blob storage; the scheme wasb is used for accessing it over HTTP, and wasbs for accessing over HTTPS. We use the URI scheme:

      wasb[s]://<container>@<account>/path/to/file

      to address individual blobs. We use the standard Azure Java SDK (com.microsoft.windowsazure) to do most of the work. In order to map a hierarchical file system over the flat name-value pair nature of blob storage, we create a specially tagged blob named path/to/dir whenever we create a directory called path/to/dir, then files under that are stored as normal blobs path/to/dir/file. We have many metrics implemented for it using the Metrics2 interface. Tests are implemented mostly using a mock implementation for the Azure SDK functionality, with an option to test against a real blob storage if configured (instructions provided inside in README.txt).

      Credits and history

      This has been ongoing work for a while, and the early version of this work can be seen in HADOOP-8079. This JIRA is a significant revision of that and we'll post the patch here for Hadoop trunk first, then post a patch for branch-1 as well for backporting the functionality if accepted. Credit for this work goes to the early team: Min Wei, David Lao, Lengning Liu and Alexander Stojanovic as well as multiple people who have taken over this work since then (hope I don't forget anyone): Dexter Bradshaw, Johannes Klein, Ivan Mitic, Michael Rys, Mostafa Elhemali, Brian Swan, Mike Liddell, Xi Fang, and Chuan Liu.

      Test

      Besides unit tests, we have used WASB as the default file system in our service product. (HDFS is also used but not as default file system.) Various different customer and test workloads have been run against clusters with such configurations for quite some time. The current version reflects to the version of the code tested and used in our production environment.

      1. HADOOP-9629.patch
        426 kB
        Mostafa Elhemali
      2. HADOOP-9629.2.patch
        427 kB
        Mostafa Elhemali
      3. HADOOP-9629.3.patch
        477 kB
        Chuan Liu

        Activity

        Hide
        Mostafa Elhemali added a comment -

        Patch attached. Note this is includes the fix for HADOOP-9559 since we depend on that fix for the tests (and functionality) to work.

        Show
        Mostafa Elhemali added a comment - Patch attached. Note this is includes the fix for HADOOP-9559 since we depend on that fix for the tests (and functionality) to work.
        Hide
        Hadoop QA added a comment -

        -1 overall. Here are the results of testing the latest attachment
        http://issues.apache.org/jira/secure/attachment/12586739/HADOOP-9629.patch
        against trunk revision .

        +1 @author. The patch does not contain any @author tags.

        +1 tests included. The patch appears to include 26 new or modified test files.

        +1 javac. The applied patch does not increase the total number of javac compiler warnings.

        -1 javadoc. The javadoc tool appears to have generated 4 warning messages.

        +1 eclipse:eclipse. The patch built with eclipse:eclipse.

        -1 findbugs. The patch appears to introduce 4 new Findbugs (version 1.3.9) warnings.

        -1 release audit. The applied patch generated 2 release audit warnings.

        +1 core tests. The patch passed unit tests in hadoop-common-project/hadoop-common.

        +1 contrib tests. The patch passed contrib unit tests.

        Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//testReport/
        Release audit warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//artifact/trunk/patchprocess/patchReleaseAuditProblems.txt
        Findbugs warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//artifact/trunk/patchprocess/newPatchFindbugsWarningshadoop-common.html
        Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//console

        This message is automatically generated.

        Show
        Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12586739/HADOOP-9629.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 26 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 javadoc . The javadoc tool appears to have generated 4 warning messages. +1 eclipse:eclipse . The patch built with eclipse:eclipse. -1 findbugs . The patch appears to introduce 4 new Findbugs (version 1.3.9) warnings. -1 release audit . The applied patch generated 2 release audit warnings. +1 core tests . The patch passed unit tests in hadoop-common-project/hadoop-common. +1 contrib tests . The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//testReport/ Release audit warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//artifact/trunk/patchprocess/patchReleaseAuditProblems.txt Findbugs warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//artifact/trunk/patchprocess/newPatchFindbugsWarningshadoop-common.html Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/2617//console This message is automatically generated.
        Hide
        Mostafa Elhemali added a comment -

        Updated patch with javadoc, findbugs and release audit fixes.

        Show
        Mostafa Elhemali added a comment - Updated patch with javadoc, findbugs and release audit fixes.
        Hide
        Hadoop QA added a comment -

        +1 overall. Here are the results of testing the latest attachment
        http://issues.apache.org/jira/secure/attachment/12586839/HADOOP-9629.2.patch
        against trunk revision .

        +1 @author. The patch does not contain any @author tags.

        +1 tests included. The patch appears to include 26 new or modified test files.

        +1 javac. The applied patch does not increase the total number of javac compiler warnings.

        +1 javadoc. The javadoc tool did not generate any warning messages.

        +1 eclipse:eclipse. The patch built with eclipse:eclipse.

        +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

        +1 release audit. The applied patch does not increase the total number of release audit warnings.

        +1 core tests. The patch passed unit tests in hadoop-common-project/hadoop-common.

        +1 contrib tests. The patch passed contrib unit tests.

        Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/2623//testReport/
        Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/2623//console

        This message is automatically generated.

        Show
        Hadoop QA added a comment - +1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12586839/HADOOP-9629.2.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 26 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 javadoc . The javadoc tool did not generate any warning messages. +1 eclipse:eclipse . The patch built with eclipse:eclipse. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. +1 core tests . The patch passed unit tests in hadoop-common-project/hadoop-common. +1 contrib tests . The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/2623//testReport/ Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/2623//console This message is automatically generated.
        Hide
        Chuan Liu added a comment -

        Attach a new patch. Slightly updated the description to address the schema change from asv(s) to wasb(s). Adding to the creditors, Mike Liddell, Brian Swan, Xi Fang, and myself.

        Show
        Chuan Liu added a comment - Attach a new patch. Slightly updated the description to address the schema change from asv(s) to wasb(s) . Adding to the creditors, Mike Liddell , Brian Swan , Xi Fang , and myself.
        Hide
        Hadoop QA added a comment -

        +1 overall. Here are the results of testing the latest attachment
        http://issues.apache.org/jira/secure/attachment/12586839/HADOOP-9629.2.patch
        against trunk revision .

        +1 @author. The patch does not contain any @author tags.

        +1 tests included. The patch appears to include 26 new or modified test files.

        +1 javac. The applied patch does not increase the total number of javac compiler warnings.

        +1 javadoc. The javadoc tool did not generate any warning messages.

        +1 eclipse:eclipse. The patch built with eclipse:eclipse.

        +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

        +1 release audit. The applied patch does not increase the total number of release audit warnings.

        +1 core tests. The patch passed unit tests in hadoop-common-project/hadoop-common.

        +1 contrib tests. The patch passed contrib unit tests.

        Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/3453//testReport/
        Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/3453//console

        This message is automatically generated.

        Show
        Hadoop QA added a comment - +1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12586839/HADOOP-9629.2.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 26 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 javadoc . The javadoc tool did not generate any warning messages. +1 eclipse:eclipse . The patch built with eclipse:eclipse. +1 findbugs . The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. +1 core tests . The patch passed unit tests in hadoop-common-project/hadoop-common. +1 contrib tests . The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/3453//testReport/ Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/3453//console This message is automatically generated.
        Hide
        Hadoop QA added a comment -

        -1 overall. Here are the results of testing the latest attachment
        http://issues.apache.org/jira/secure/attachment/12624273/HADOOP-9629.3.patch
        against trunk revision .

        +1 @author. The patch does not contain any @author tags.

        +1 tests included. The patch appears to include 31 new or modified test files.

        +1 javac. The applied patch does not increase the total number of javac compiler warnings.

        -1 javadoc. The javadoc tool appears to have generated 1 warning messages.

        +1 eclipse:eclipse. The patch built with eclipse:eclipse.

        -1 findbugs. The patch appears to introduce 3 new Findbugs (version 1.3.9) warnings.

        +1 release audit. The applied patch does not increase the total number of release audit warnings.

        -1 core tests. The patch failed these unit tests in hadoop-common-project/hadoop-common:

        org.apache.hadoop.fs.azurenative.TestAzureFileSystemErrorConditions
        org.apache.hadoop.fs.azurenative.TestAzureConcurrentOutOfBandIo
        org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemLive
        org.apache.hadoop.fs.azurenative.TestOutOfBandAzureBlobOperationsLive
        org.apache.hadoop.fs.azurenative.TestContainerChecks
        org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemContractLive
        org.apache.hadoop.fs.azurenative.TestAzureFileSystemInstrumentation
        org.apache.hadoop.fs.azurenative.TestWasbUriAndConfiguration
        org.apache.hadoop.fs.azurenative.TestBlobDataValidation

        The following test timeouts occurred in hadoop-common-project/hadoop-common:

        org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemContractEmulator

        +1 contrib tests. The patch passed contrib unit tests.

        Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//testReport/
        Findbugs warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//artifact/trunk/patchprocess/newPatchFindbugsWarningshadoop-common.html
        Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//console

        This message is automatically generated.

        Show
        Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12624273/HADOOP-9629.3.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 31 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. -1 javadoc . The javadoc tool appears to have generated 1 warning messages. +1 eclipse:eclipse . The patch built with eclipse:eclipse. -1 findbugs . The patch appears to introduce 3 new Findbugs (version 1.3.9) warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 core tests . The patch failed these unit tests in hadoop-common-project/hadoop-common: org.apache.hadoop.fs.azurenative.TestAzureFileSystemErrorConditions org.apache.hadoop.fs.azurenative.TestAzureConcurrentOutOfBandIo org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemLive org.apache.hadoop.fs.azurenative.TestOutOfBandAzureBlobOperationsLive org.apache.hadoop.fs.azurenative.TestContainerChecks org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemContractLive org.apache.hadoop.fs.azurenative.TestAzureFileSystemInstrumentation org.apache.hadoop.fs.azurenative.TestWasbUriAndConfiguration org.apache.hadoop.fs.azurenative.TestBlobDataValidation The following test timeouts occurred in hadoop-common-project/hadoop-common: org.apache.hadoop.fs.azurenative.TestNativeAzureFileSystemContractEmulator +1 contrib tests . The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//artifact/trunk/patchprocess/newPatchFindbugsWarningshadoop-common.html Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/3454//console This message is automatically generated.

          People

          • Assignee:
            Mostafa Elhemali
            Reporter:
            Mostafa Elhemali
          • Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

            Dates

            • Created:
              Updated:

              Development