我编写了一个Hadoop程序,它需要HDFS中的某个布局,之后,我需要从HDFS中获取文件.它适用于我的单节点Hadoop设置,我很想让它在Elastic MapReduce中的10个节点上工作.
我一直在做的是这样的:
./elastic-mapreduce --create --alive
JOBID="j-XXX" # output from creation
./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp s3://bucket-id/XXX /XXX"
./elastic-mapreduce -j $JOBID --jar s3://bucket-id/jars/hdeploy.jar --main-class com.ranjan.HadoopMain --arg /XXX
Run Code Online (Sandbox Code Playgroud)
这是异步的,但是当作业完成后,我可以这样做
./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp /XXX s3://bucket-id/XXX-output"
./elastic-mapreduce -j $JOBID --terminate
Run Code Online (Sandbox Code Playgroud)
所以虽然这种方式有效,但它很笨重,而不是我想要的.有更清洁的方法吗?
谢谢!
我正在尝试在EC2上创建一个集群.我有一个帐户设置并通过AWS验证.我已成功下载并安装了segue软件包和相关软件包,并设置了我的AWS凭据.当我尝试创建一个集群时,我的问题开始了,我得到以下内容:
> library(segue)
Loading required package: rJava
Loading required package: caTools
Loading required package: bitops
Segue did not find your AWS credentials. Please run the setCredentials() function.
> setCredentials('', '') #keys hidden
> myCluster <- createCluster(numInstances=5)
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
com.amazonaws.AmazonClientException: Can't turn bucket name into a URI: Illegal character in authority at index 8: https://c:\users\backup~1\appdata\local\temp\rtmp4u0n8yqaaoducils-segue.s3.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我尝试了以下引导操作组合来增加我的作业的堆大小,但它们似乎都没有工作:
--mapred-key-value mapred.child.java.opts=-Xmx1024m
--mapred-key-value mapred.child.ulimit=unlimited
--mapred-key-value mapred.map.child.java.opts=-Xmx1024m
--mapred-key-value mapred.map.child.ulimit=unlimited
-m mapred.map.child.java.opts=-Xmx1024m
-m mapred.map.child.ulimit=unlimited
-m mapred.child.java.opts=-Xmx1024m
-m mapred.child.ulimit=unlimited
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
hadoop mapreduce amazon-web-services amazon-emr elastic-map-reduce
我正在使用亚马逊EMR,我能够运行大多数工作.当我开始加载并在EMR集群中生成更多数据时,我遇到了问题.群集用完了存储空间.
每个数据节点都是c1.medium实例.根据这里和这里的链接,每个数据节点应该有350GB的实例存储.通过ElasticMapReduce Slave安全组,我已经能够在我的AWS控制台中验证c1.medium数据节点正在运行并且是实例存储.
当我在namenode上运行hadoop dfsadmin -report时,每个数据节点都有大约10GB的存储空间.运行df -h可以进一步验证这一点
hadoop@domU-xx-xx-xx-xx-xx:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 2.6G 6.8G 28% /
tmpfs 859M 0 859M 0% /lib/init/rw
udev 10M 52K 10M 1% /dev
tmpfs 859M 4.0K 859M 1% /dev/shm
Run Code Online (Sandbox Code Playgroud)
如何配置我的数据节点以使用完整的350GB存储启动?有没有办法使用引导操作执行此操作?
hadoop amazon-ec2 amazon-web-services elastic-map-reduce emr
也许它与Hadoop相同但我无法找到编写地图的格式或示例,并在地图示例旁边减少python代码:http://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/
但我找不到简化代码示例,
它和Hadoop一样吗?什么是格式,有什么例子吗?
我在这里遵循这个例子,希望使用EC2/S3/EMR/R成功运行. https://gist.github.com/406824
流程步骤中的作业失败.以下是错误日志:
控制器:
2011-07-21T19:14:27.711Z INFO Fetching jar file.
2011-07-21T19:14:30.380Z INFO Working dir /mnt/var/lib/hadoop/steps/1
2011-07-21T19:14:30.380Z INFO Executing /usr/lib/jvm/java-6-sun/bin/java -cp /home/hadoop/conf: /usr/lib/jvm/java-6-sun/lib/tools.jar:/home/hadoop:/home/hadoop/hadoop-0.20-core.jar:/home/hadoop/hadoop-0.20-tools.jar:/home/hadoop/lib/*:/home/hadoop/lib/jetty-ext/* -Xmx1000m -Dhadoop.log.dir=/mnt/var/log/hadoop/steps/1 -Dhadoop.log.file=syslog -Dhadoop.home.dir=/home/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,DRFA -Djava.io.tmpdir=/mnt/var/lib/hadoop/steps/1/tmp -Djava.library.path=/home/hadoop/lib/native/Linux-i386-32 org.apache.hadoop.util.RunJar /home/hadoop/contrib/streaming/hadoop-streaming.jar -cacheFile s3n://emrexample21/calculatePiFunction.R#calculatePiFunction.R -input s3n://emrexample21/numberList.txt -output s3n://emrout/ -mapper s3n://emrexample21/mapper.R -reducer s3n://emrexample21/reducer.R
2011-07-21T19:16:12.057Z INFO Execution ended with ret val 1
2011-07-21T19:16:12.057Z WARN Step failed with bad retval
2011-07-21T19:16:14.185Z INFO Step created jobs: job_201107211913_0001
Run Code Online (Sandbox Code Playgroud)
标准错误:
Streaming Command Failed!
Run Code Online (Sandbox Code Playgroud)
标准输出:
packageJobJar: [/mnt/var/lib/hadoop/tmp/hadoop-unjar2368654264051498521/] [] /mnt/var/lib/hadoop/steps/2/tmp/streamjob1658200878131882888.jar tmpDir=null
Run Code Online (Sandbox Code Playgroud)
系统日志:
2011-07-21 19:50:29,539 INFO org.apache.hadoop.mapred.JobClient (main): Default number …Run Code Online (Sandbox Code Playgroud) 通过UI,亚马逊的框架允许我通过指定多个输入行来创建具有多个输入的作业.例如:
-input s3n:// something -input s3n:// something-else
同样,Ruby EMR客户端到目前为止对我非常有帮助:http: //aws.amazon.com/developertools/2264
但是,我正在尝试编写需要多次输入的夜间工作,我似乎无法找到任何方法来执行此操作.它不会让我传递多个输入参数,当我使用--arg或--args时,创建的作业不包含-input行.它几乎就像剥离它一样.
有没有人成功地使用这个工具?
我将DynamoDB表导出为s3作为备份方式(通过EMR).当我导出时,我将数据存储为lzo压缩文件.我的hive查询如下,但基本上我在http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/EMR_Hive_Commands.html上执行了 "使用数据压缩将Amazon DynamoDB表导出到Amazon S3存储桶".
我现在想要反过来 - 拿走我的LZO文件并将它们放回蜂巢表中.你怎么做到这一点?我希望看到一些hive配置属性用于输入,但没有.我用Google搜索并发现了一些提示,但没有任何确定性,也没有任何效果.
s3中的文件格式为:s3:// [mybucket] /backup/year=2012/month=08/day=01/000000.lzo
这是我的HQL导出:
SET dynamodb.throughput.read.percent=1.0;
SET hive.exec.compress.output=true;
SET io.seqfile.compression.type=BLOCK;
SET mapred.output.compression.codec = com.hadoop.compression.lzo.LzopCodec;
CREATE EXTERNAL TABLE hiveSBackup (id bigint, periodStart string, allotted bigint, remaining bigint, created string, seconds bigint, served bigint, modified string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "${DYNAMOTABLENAME}",
"dynamodb.column.mapping" = "id:id,periodStart:periodStart,allotted:allotted,remaining:remaining,created:created,seconds:seconds,served:served,modified:modified");
CREATE EXTERNAL TABLE s3_export (id bigint, periodStart string, allotted bigint, remaining bigint, created string, seconds bigint, served bigint, modified string)
PARTITIONED BY (year string, month string, …Run Code Online (Sandbox Code Playgroud) 我知道我们可以对现货实例进行投标,并以低于常规实例的价格获得它们,但是对于现货实例,存在实例被收回的风险.
我想知道我们有什么方法可以确保只有在我们的工作完成后他们才会被带走?
我正试图用Hive来解决分析网络日志的问题,我已经看到了很多例子,但我似乎找不到任何有这个特定问题的人.
这就是我所处的位置:我已经建立了一个AWS ElasticMapReduce集群,我可以登录,然后启动Hive.我确保add jar hive-contrib-0.8.1.jar,并说它已加载.我创建了一个名为的表event_log_raw,其中包含一些字符串列和一个正则表达式. load data inpath '/user/hadoop/tmp overwrite into table event_log_raw,我要参加比赛了.select * from event_log_raw工作(我认为在本地,因为我没有得到地图%和减少%输出),我从我的样本数据得到我的10条记录,正确解析,一切都很好. select count(*) from event_log_raw也是这样,这次创建了mapreduce作业.
我想将我的request_url字段转换为地图,所以我运行:
select elr.view_time as event_time, elr.ip as ip,
str_to_map(split(elr.request_url," ")[1],"&","=") as params
from event_log_raw elr
Run Code Online (Sandbox Code Playgroud)
Mapreduce开火,等待,等待......失败.
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
MapReduce Jobs Launched:
Job 0: Map: 1 HDFS Read: 0 HDFS Write: 0 FAIL
Run Code Online (Sandbox Code Playgroud)
我从任务跟踪器检查系统日志,并查看,除其他外,
java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) …Run Code Online (Sandbox Code Playgroud) 我在 Amazon AWS 上使用 Elastic Mapreduce 基础设施。一个 jowflow 自动终止。根据 Amazon 控制台的最后状态更改原因是:“作业流中的所有从站都已终止”。
创建作业流命令:
elastic-mapreduce --create --name MyCluster --alive --instance-group master --instance-type m1.xlarge --instance-count 1 --bid-price 2.0 --instance-group core --instance-type m1.xlarge --instance-count 10 --bid-price 2.0 --hive-interactive --enable-debugging
Run Code Online (Sandbox Code Playgroud)
关于工作流程的详细信息:

日志的最后几行...
Total MapReduce jobs = 2
Launching Job 1 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum …Run Code Online (Sandbox Code Playgroud)