在亚马逊文档 http://aws.amazon.com/dynamodb/以及其他地方已经建议你可以使用Elastic Map Reduce备份你的dynamodb表,
我对这如何工作有一个大致的了解,但我不能找到任何指南或教程,
所以我的问题是如何自动化dynamodb备份(使用EMR)?
到目前为止,我认为我需要使用map函数创建一个"流"作业,该函数从dynamodb读取数据,并将reduce写入S3,我相信这些可以用Python(或java或其他几种语言)编写.
任何评论,澄清,代码示例,更正都表示赞赏.
我通过Elastic MapReduce交互式会话创建了一个Hive表,并从CSV文件填充它,如下所示:
CREATE TABLE csvimport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
LOAD DATA LOCAL INPATH '/home/hadoop/file.csv' OVERWRITE INTO TABLE csvimport;
Run Code Online (Sandbox Code Playgroud)
我现在想要将Hive表存储在S3存储桶中,以便在终止MapReduce实例后保留表.
有谁知道如何做到这一点?
我在分析日志文件的数据管道中运行EMR活动,当我的管道发生故障时,我收到以下错误:
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://10.208.42.127:9000/home/hadoop/temp-output-s3copy already exists
at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:121)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:944)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:905)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:905)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:879)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1316)
at com.valtira.datapipeline.stream.CloudFrontStreamLogProcessors.main(CloudFrontStreamLogProcessors.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:187)
Run Code Online (Sandbox Code Playgroud)
如何从Hadoop中删除该文件夹?
我在Amazon Elastic Map Reduce(EMR)上运行Apache Spark上的工作.目前我正在运行emr-4.1.0,其中包括Amazon Hadoop 2.6.0和Spark 1.5.0.
当我开始工作时,YARN正确地将所有工作节点分配给spark作业(当然,一个用于驱动程序).
我将魔术"maximizeResourceAllocation"属性设置为"true",并将spark属性"spark.dynamicAllocation.enabled"也设置为"true".
但是,如果通过将节点添加到工作计算机的CORE池来调整emr集群的大小,则YARN仅会将一些新节点添加到spark作业.
例如,今天早上我有一个使用26个节点的工作(m3.2xlarge,如果这很重要) - 1个用于驱动程序,25个执行程序.我想加快工作,所以我尝试添加8个节点.YARN已经获取了所有新节点,但只将其中一个分配给了Spark作业.Spark成功地接收了新节点,并将其用作执行器,但我的问题是为什么YARN让其他7个节点闲置?
由于显而易见的原因,这很烦人 - 即使它们没有被使用,我也必须为资源付费,而我的工作根本没有加速!
有人知道YARN如何决定何时添加节点来运行火花作业?什么变量发挥作用?记忆?V-核心?什么?
提前致谢!
我正在使用亚马逊的具体星火的EMR集群(版本EMR-4.2.0)maximizeResourceAllocation标志作为记录在这里.根据这些文档,"此选项计算核心节点组中节点上执行程序可用的最大计算和内存资源,并使用此信息设置相应的spark-defaults设置".
我正在使用m3.2xlarge实例为工作节点运行集群.我正在为YARN master使用一个m3.xlarge - 我可以运行它的最小m3实例,因为它没有做太多.
情况是这样的:当我运行Spark作业时,每个执行程序所请求的核心数是8.(我在配置之后才得到这个,"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"这实际上不在文档中,但我离题了).这似乎是有道理的,因为根据这些文档,m3.2xlarge有8个"vCPU".但是,在实际实例本身中/etc/hadoop/conf/yarn-site.xml,每个节点都配置为yarn.nodemanager.resource.cpu-vcores设置为16.我(猜测)认为这必定是因为超线程或者其他一些硬件的原因.
所以问题在于:当我使用时maximizeResourceAllocation,我获得了亚马逊实例类型具有的"vCPU"数量,这似乎只是YARN在节点上运行的已配置"VCores"数量的一半; 因此,执行程序仅使用实例上实际计算资源的一半.
这是Amazon EMR中的错误吗?其他人是否遇到同样的问题?是否还有其他一些我缺少的魔法无证配置?
我有一个在AWS EC2上运行的网站.我需要创建一个夜间作业,生成站点地图文件并将文件上传到各种浏览器.我在AWS上寻找一个允许此功能的实用程序.我考虑过以下几点:
1)生成对Web服务器的请求,以触发它执行此任务
2)在运行Web服务器的计算机上创建一个cron作业以执行此任务
3)创建另一个EC2实例并设置一个cron作业来运行该任务
还有其他选择吗?这是ElasticMapReduce的工作吗?
如何删除当前在Hive表中加载的所有分区?
我可以删除一个分区 alter table <table> drop partition(a=, b=...);
我可以使用recover partitions语句加载所有分区.但我似乎无法放弃所有分区.
我正在使用EMR支持的最新Hive版本,0.8.1.
我正在使用Spark 1.4的ML库中的Gradient Boosted Trees学习算法进行实验.我正在解决二进制分类问题,我的输入是大约50,000个样本和~500,000个特征.我的目标是以人类可读的格式输出生成的GBT集合的定义.到目前为止,我的经验是,对于我的问题大小,向群集添加更多资源似乎对运行的长度没有影响.10次迭代训练似乎大约需要13个小时.这是不可接受的,因为我希望进行100-300次迭代运行,并且执行时间似乎随着迭代次数而爆炸.
这不是确切的代码,但可以简化为:
SparkConf sc = new SparkConf().setAppName("GBT Trainer")
// unlimited max result size for intermediate Map-Reduce ops.
// Having no limit is probably bad, but I've not had time to find
// a tighter upper bound and the default value wasn't sufficient.
.set("spark.driver.maxResultSize", "0");
JavaSparkContext jsc = new JavaSparkContext(sc)
// The input file is encoded in plain-text LIBSVM format ~59GB in size
<LabeledPoint> data = MLUtils.loadLibSVMFile(jsc.sc(), "s3://somebucket/somekey/plaintext_libsvm_file").toJavaRDD();
BoostingStrategy boostingStrategy = BoostingStrategy.defaultParams("Classification");
boostingStrategy.setNumIterations(10);
boostingStrategy.getTreeStrategy().setNumClasses(2);
boostingStrategy.getTreeStrategy().setMaxDepth(1); …Run Code Online (Sandbox Code Playgroud) machine-learning amazon-web-services elastic-map-reduce apache-spark
在EMR中,有没有办法在给定配置键的情况下使用yarn命令获取配置的特定值?
例如,我想做这样的事情
yarn get-config yarn.scheduler.maximum-allocation-mb
Run Code Online (Sandbox Code Playgroud) 我尝试过使用简单的Map/Reduce任务Amazon Elastic MapReduce,只需3分钟即可完成任务.是否可以重用同一个实例来运行另一个任务.
即使我刚刚使用该实例3分钟亚马逊将收取费用1 hr,所以我想使用余额57分钟来运行其他几项任务.
emr ×4
amazon-s3 ×3
apache-spark ×3
hadoop-yarn ×3
amazon-ec2 ×2
amazon-emr ×2
hadoop ×2
hive ×2
backup ×1
cron ×1
hadoop2 ×1
jobs ×1
mapreduce ×1