Aracılığıyla paylaş


Curl ile HDInsight'ta Apache Sqoop işlerini çalıştırma

HDInsight'ta Apache Hadoop kümesinde Apache Sqoop işlerini çalıştırmak için Curl kullanmayı öğrenin. Bu makalede Azure Depolama'dan verileri dışarı aktarma ve Curl kullanarak SQL Server veritabanına aktarma işlemleri gösterilmektedir. Bu makale, HDInsight'ta Hadoop ile Apache Sqoop kullanma işleminin devamıdır.

Curl, Sqoop işlerini çalıştırmak, izlemek ve sonuçlarını almak için ham HTTP isteklerini kullanarak HDInsight ile nasıl etkileşim kurabileceğinizi göstermek için kullanılır. Bu, HDInsight kümeniz tarafından sağlanan WebHCat REST API'sini (eski adıyla Templeton) kullanarak çalışır.

Önkoşullar

Curl kullanarak Apache Sqoop işlerini gönderme

Azure Depolama'dan SQL Server'a Apache Sqoop işlerini kullanarak verileri dışarı aktarmak için Curl kullanın.

Not

Curl’ü veya WebHCat ile başka bir REST iletişimini kullanırken HDInsight küme yöneticisinin kullanıcı adı ve parolasını sağlayarak isteklerin kimliğini doğrulamanız gerekir. Ayrıca, sunucuya istek göndermek için kullanılan Tekdüzen Kaynak Tanımlayıcısı’nın (URI) bir parçası olarak küme adını kullanmanız gerekir.

Bu bölümdeki komutlar için değerini USERNAME kümede kimlik doğrulaması için kullanıcıyla değiştirin ve değerini kullanıcı hesabının parolası ile değiştirin PASSWORD . CLUSTERNAME değerini kümenizin adıyla değiştirin.

REST API’sinin güvenliği temel kimlik doğrulaması ile sağlanır. Kimlik bilgilerinizin sunucuya güvenli bir şekilde gönderilmesi için istekleri her zaman Güvenli HTTP (HTTPS) kullanarak yapmanız gerekir.

  1. Kullanım kolaylığı için aşağıdaki değişkenleri ayarlayın. Bu örnek bir Windows ortamını temel alır, ortamınız için gerektiği gibi düzeltin.

    set CLUSTERNAME=
    set USERNAME=admin
    set PASSWORD=
    set SQLDATABASESERVERNAME=
    set SQLDATABASENAME=
    set SQLPASSWORD=
    set SQLUSER=sqluser
    
  2. HDInsight kümenize bağlanabildiğinizi doğrulamak için bir komut satırında aşağıdaki komutu kullanın:

    curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
    

    Aşağıdakine benzer bir yanıt almanız gerekir:

    {"status":"ok","version":"v1"}
    
  3. Sqoop işi göndermek için aşağıdakileri kullanın:

    curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoop
    

    Bu komutta kullanılan parametreler aşağıdaki gibidir:

    • -d - -G Kullanılmadığından, istek varsayılan olarak POST yöntemini kullanır. -d , istekle birlikte gönderilen veri değerlerini belirtir.

      • user.name - Komutu çalıştıran kullanıcı.

      • command - Yürütülecek Sqoop komutu.

      • statusdir - Bu işin durumunun yazılacağı dizin.

      Bu komut, işin durumunu denetlemek için kullanılabilecek bir iş kimliği döndürür.

      {"id":"job_1415651640909_0026"}
      
  4. İşin durumunu denetlemek için aşağıdaki komutu kullanın. değerini önceki adımda döndürülen değerle değiştirin JOBID . Örneğin, dönüş değeri ise {"id":"job_1415651640909_0026"}JOBID olurjob_1415651640909_0026. konumunu gerektiği gibi düzeltin jq .

    set JOBID=job_1415651640909_0026
    
    curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.state
    

    İş tamamlandıysa, durum BAŞARILI olur.

    Not

    Bu Curl isteği, iş hakkında bilgi içeren bir JavaScript Nesne Gösterimi (JSON) belgesi döndürür; jq yalnızca durum değerini almak için kullanılır.

  5. İşin durumu BAŞARILI olarak değiştirildikten sonra, işin sonuçlarını Azure Blob depolamadan alabilirsiniz. statusdir Sorgu ile geçirilen parametre, çıktı dosyasının konumunu içerir; bu örnekte, wasb:///example/data/sqoop/curl. Bu adres, işin çıkışını HDInsight kümeniz tarafından kullanılan varsayılan depolama kapsayıcısında dizininde example/data/sqoop/curl depolar.

    stderr ve stdout bloblarına erişmek için Azure portal kullanabilirsiniz.

  6. Verilerin dışarı aktarıldığını doğrulamak için, dışarı aktarılan verileri görüntülemek üzere SQL istemcinizden aşağıdaki sorguları kullanın:

    SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK);
    SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
    

Sınırlamalar

  • Toplu dışarı aktarma - Linux tabanlı HDInsight ile verileri Microsoft SQL Server veya Azure SQL Veritabanı'na aktarmak için kullanılan Sqoop bağlayıcısı şu anda toplu eklemeleri desteklemez.
  • Toplu işlem - Linux tabanlı HDInsight ile, eklemeleri gerçekleştirirken anahtarı kullanırken -batch Sqoop, ekleme işlemlerini toplu olarak çalıştırmak yerine birden çok ekleme gerçekleştirir.

Özet

Bu belgede gösterildiği gibi, HDInsight kümenizdeki Sqoop işlerini çalıştırmak, izlemek ve sonuçlarını görüntülemek için ham bir HTTP isteği kullanabilirsiniz.

Bu makalede kullanılan REST arabirimi hakkında daha fazla bilgi için Apache Sqoop REST API kılavuzuna bakın.

Sonraki adımlar

HDInsight üzerinde Apache Hadoop ile Apache Sqoop kullanma

Curl içeren diğer HDInsight makaleleri için: