Запуск сканирования Nutch на EMR (новичок)

Я впервые пользуюсь EMR/Hadoop и впервые использую Apache Nutch. Я пытаюсь использовать Apache Nutch 2.1 для очистки экрана. Я хотел бы запустить его на Hadoop, но не хочу настраивать свой собственный кластер (по одной кривой обучения за раз). Поэтому я использую ЭМИ. И я бы хотел, чтобы S3 использовался для вывода (и любого ввода, который мне нужен).

Я читал вики по настройке Nutch:

http://wiki.apache.org/nutch/NutchTutorial
http://wiki.apache.org/nutch/NutchHadoopTutorial

И они очень помогли мне освоить самые основы натчинга. Я понимаю, что могу собрать nutch из исходного кода, предварительно настроить некоторые регулярные выражения, а затем остаться с дружественной к Hadoop банкой:

$NUTCH_HOME/runtime/deploy/apache-nutch-2.1.job

Кульминацией большинства руководств является выполнение команды сканирования. В примерах Hadoop это:

hadoop jar nutch-${version}.jar org.apache.nutch.crawl.Crawl urls -dir crawl -depth 3 -topN 5

А в примере с локальным развертыванием это что-то вроде:

bin/nutch crawl urls -dir crawl -depth 3 -topN 5

Мой вопрос заключается в следующем. Что мне нужно сделать, чтобы мой apache-nutch-2.1.job работал на EMR? Какие аргументы, чтобы передать это? В приведенном выше примере сканирования Hadoop файл «urls» уже находится на hdfs с начальными URL-адресами. Как это сделать на ЭМИ? Кроме того, что мне указать в командной строке, чтобы мой окончательный вывод был на S3 вместо HDFS?


person sethwm    schedule 03.06.2013    source источник
comment
есть новости по этому вопросу?   -  person hcg    schedule 30.07.2013


Ответы (1)


Итак, для начала, это не может быть сделано с помощью графического интерфейса. Вместо этого я получил nutch, работающий с использованием AWS Java API.

У меня есть исходные файлы, расположенные в s3, и я передаю свои выходные данные обратно в s3.

Я использую банку dsdistcp для копирования данных из s3 в hdfs.

Вот моя базовая пошаговая конфигурация. MAINCLASS будет подробной информацией о пакете вашего ползания орехов. Что-то вроде org.apach.nutch.mainclass.

    String HDFSDIR = "/user/hadoop/data/";

    stepconfigs.add(new StepConfig()
            .withName("Add Data")
            .withActionOnFailure(ActionOnFailure.TERMINATE_JOB_FLOW)
            .withHadoopJarStep(new HadoopJarStepConfig(prop.getProperty("S3DISTCP"))
            .withArgs("--src", prop.getProperty("DATAFOLDER"), "--dest", HDFSDIR)));

    stepconfigs.add(new StepConfig()
            .withName("Run Main Job")
            .withActionOnFailure(ActionOnFailure.CONTINUE)
            .withHadoopJarStep(new HadoopJarStepConfig(nutch-1.7.jar)
            .withArgs("org.apache.nutch.crawl.Crawl", prop.getProperty("CONF"), prop.getProperty("STEPS"), "-id=" + jobId)));


    stepconfigs.add(new StepConfig()
            .withName("Pull Output")
            .withActionOnFailure(ActionOnFailure.TERMINATE_JOB_FLOW)
            .withHadoopJarStep(new HadoopJarStepConfig(prop.getProperty("S3DISTCP"))
            .withArgs("--src", HDFSDIR, "--dest", prop.getProperty("DATAFOLDER"))));

    new AmazonElasticMapReduceClient(new PropertiesCredentials(new File("AwsCredentials.properties")), proxy ? new ClientConfiguration().withProxyHost("dawebproxy00.americas.nokia.com").withProxyPort(8080) : null)
                .runJobFlow(new RunJobFlowRequest()
                .withName("Job: " + jobId)
                .withLogUri(prop.getProperty("LOGDIR"))
                .withAmiVersion(prop.getProperty("AMIVERSION"))
                .withSteps(getStepConfig(prop, jobId))
                .withBootstrapActions(getBootStrap(prop))
                .withInstances(getJobFlowInstancesConfig(prop)));
person Dan Ciborowski - MSFT    schedule 27.08.2013
comment
Пожалуйста, задавайте конкретные вопросы, и я постараюсь помочь больше. Используйте вышеизложенное в качестве отправной точки - person Dan Ciborowski - MSFT; 27.08.2013