Вступление
Традиционно Microsoft Windows была своего рода пасынком в мире Hadoop — команда ‘hadoop’ для управления действиями из командной строки и сценарии запуска / выключения были написаны в Linux / * nix с учетом bash. Таким образом, если вы хотите запустить Hadoop в Windows, вам нужно было установить Cygwin.
Также в документе Apache Hadoop говорится следующее (цитаты из документации по Hadoop R1.1.0):
«• GNU / Linux поддерживается как платформа для разработки и производства. Hadoop был продемонстрирован на кластерах GNU / Linux с 2000 узлами.
• Win32 поддерживается в качестве платформы разработки. Распределенная операция не была хорошо протестирована на Win32, поэтому она не поддерживается как производственная платформа ».
Microsoft и Hortonworks объединили свои усилия, чтобы сделать Hadoop доступным на Windows Server для локальных развертываний, а также на Windows Azure для поддержки больших данных в облаке.
Этот пост посвящен Windows Azure HDInsight (Hadoop для Azure, см. Https://www.hadooponazure.com ). На момент написания, сервису требуется приглашение для участия в CTP (Community Technology Preview), но процесс приглашения очень эффективно управляется — после заполнения опроса я получил код доступа к сервису в течение нескольких дней.
Новый запрос кластера
Первым шагом является запрос нового кластера, вам необходимо определить имя кластера и учетные данные, чтобы иметь возможность войти в головной узел. По умолчанию кластер состоит из 3 узлов.
Через несколько минут у вас будет запущенный кластер, затем нажмите ссылку «Перейти к кластеру», чтобы перейти на главную страницу.
WordCount с HDInsight в Azure
Ни один тест Hadoop не обходится без стандартного приложения WordCount — Microsoft Azure HDInsight предоставляет файл примера (davinci.txt) и файл jar Java для запуска wordcount — Hello World of Hadoop.
Сначала вам нужно перейти на консоль JavaScript, чтобы загрузить текстовый файл с помощью fs.put ():
js> fs.put() Choose File -> Browse Destination: /user/istvan/example/data/davinci
Создать работу:
Фактическая команда, которую выполняет Microsoft Azure HDInsight, выглядит следующим образом:
c:\apps\dist\hadoop-1.1.0-SNAPSHOT\bin\hadoop.cmd jar c:\apps\Jobs\templates\634898986181212311.hadoop-examples-1.1.0-SNAPSHOT.jar wordcount /user/istvan/example/data/davinci davinci-output
Вы можете проверить вывод из консоли JavaScript:
js> result = fs.read("davinci-output") "(Lo)cra" 1 "1490 1 "1498," 1 "35" 1 "40," 1 "AS-IS". 1 "A_ 1 "Absoluti 1 "Alack! 1
Microsoft HDInsight Streaming — задание Hadoop в C #
Hadoop Streaming — это утилита для поддержки запуска внешней карты и сокращения рабочих мест. Эти внешние задания могут быть написаны на разных языках программирования, таких как Python или Ruby — если мы поговорим о Microsoft HDInsight, пример лучше основывать на .NET C #…
Демонстрационное приложение для потоковой передачи C # снова является примером WordCount с использованием имитации команд Unix cat и wc. Вы можете запустить демонстрацию из плитки «Samples», но я предпочитаю демонстрировать Hadoop Streaming из командной строки, чтобы ближе рассмотреть происходящее под капотом.
Чтобы запустить командную строку Hadoop из командной строки Windows, необходимо войти в головной узел HDInsight с помощью удаленного рабочего стола. Сначала вам нужно нажать на плитку «Удаленный рабочий стол», затем войти в систему на удаленном узле, используя учетные данные, которые вы определили во время создания кластера. После входа в систему нажмите на ярлык Hadoop Coomand Line.
В командной строке Hadoop перейдите в каталог распространения Hadoop (на момент написания этого поста Microsoft Azure HDInsight основан на Hadoop 1.1.0):
c:> cd \apps\dist c:> hadoop fs -get /example/apps/wc.exe . c:> hadoop fs -get /example/apps/cat.exe . c:> cd \apps\dist\hadoop-1.1.0-SNAPSHOT c:\apps\dist\hadoop-1.1.0-SNAPSHOT> hadoop jar lib\hadoop-streaming.jar -input "/user/istvan/example/data/davinci" -output "/user/istvan/example/dataoutput" -mapper "..\..\jars\cat.exe" -reducer "..\..\jars\wc.exe" -file "c:\Apps\dist\wc.exe" -file "c:\Apps\dist\cat.exe"
Код C # для wc.exe выглядит следующим образом:
using System; using System.IO; using System.Linq; namespace wc { class wc { static void Main(string[] args) { string line; var count = 0; if (args.Length > 0){ Console.SetIn(new StreamReader(args[0])); } while ((line = Console.ReadLine()) != null) { count += line.Count(cr => (cr == ' ' || cr == '\n')); } Console.WriteLine(count); } } }
И код для cat.exe:
using System; using System.IO; namespace cat { class cat { static void Main(string[] args) { if (args.Length > 0) { Console.SetIn(new StreamReader(args[0])); } string line; while ((line = Console.ReadLine()) != null) { Console.WriteLine(line); } } } }
Интерактивная консоль
Microsoft Azure HDInsight поставляется с двумя типами интерактивных консолей: одна — стандартная консоль Hadoop Hive, другая — уникальная в мире Hadoop, она основана на JavaScript.
Давайте начнем с улья. Вам необходимо загрузить свои данные, используя метод javascript fs.put (), как описано выше. Затем вы можете создать свою таблицу Hive и выполнить запрос на выборку следующим образом:
CREATE TABLE stockprice (yyyymmdd STRING, open_price FLOAT, high_price FLOAT, low_price FLOAT, close_price FLOAT, stock_volume INT, adjclose_price FLOAT) row format delimited fields terminated by ',' lines terminated by '\n' location '/user/istvan/input/'; select yyyymmdd, high_price, stock_volume from stockprice order by high_price desc;
Другая разновидность интерактивной консоли HDInsight основана на JavaScript — как уже было сказано, это уникальное предложение от Microsoft — на самом деле команды JavaScript преобразуются в операторы Pig.
Синтаксис напоминает запрос типа LINQ, но не тот же:
js> pig.from("/user/istvan/input/goog_stock.csv", "date,open,high,low,close,volume,adjclose", ",").select("date, high, volume").orderBy("high DESC").to("result") js> result = fs.read("result") 05/10/2012 774.38 2735900 04/10/2012 769.89 2454200 02/10/2012 765.99 2790200 01/10/2012 765 3168000 25/09/2012 764.89 6058500
Под капотом
Microsoft и Hortonworks повторно внедрили ключевые двоичные файлы (namenode, jobtracker, secondnamenode, datanode, tasktracker) в виде исполняемых файлов (exe-файлов), и они работают в качестве служб в фоновом режиме. Ключевая команда ‘hadoop’ — которая традиционно является скриптом bash — также повторно реализована как hadoop.cmd.
Распределение состоит из Hadoop 1.1.0, Pig-0.9.3, Hive 0.9.0, Mahout 0.5 и Sqoop 1.4.2.