我不清楚如何在作业级别配置Hadoop MapReduce log4j.有人可以帮我回答这些问题.
1)如何从客户端计算机添加支持log4j日志记录.即我想在客户端机器上使用log4j属性文件,因此不希望干扰群集中的Hadoop log4j设置.我认为在项目/ jar中使用属性文件应该足够了,而hadoop的分布式缓存应该完成传输map-reduce jar的其余部分.
2)如何在$ HADOOP_HOME/logs/userlogs/job_/dir中将消息记录到自定义文件.
3)map reduce任务是否同时使用log4j属性文件?客户端作业提供的那个和hadoop集群中存在的那个?如果是,那么log4j.rootLogger会添加两个属性值吗?
谢谢Srivatsan Nallazhagappan
分发缓存实际上意味着什么?将文件放在分布式缓存中意味着它在每个datanode中都可用,因此该数据不会有节点间通信,或者它是否意味着该文件在每个节点的内存中?如果没有,通过什么方式我可以在整个工作的内存中有一个文件?这可以用于map-reduce和UDF.
(特别是有一些配置数据,相对较小,我想保留在内存中,因为UDF适用于配置单元查询...?)
谢谢和问候,Dhruv Kapur.
我正在寻找类似于Spark中Hadoop的分布式缓存的功能.我需要一个相对较小的数据文件(带有一些索引值)才能存在于所有节点中以进行一些计算.是否有任何方法可以在Spark中实现这一点?
到目前为止,我的解决方法是将索引文件作为正常处理进行分发和缩减,在我的应用程序中大约需要10秒.之后,我将文件持久化,指示它为广播变量,如下所示:
JavaRDD<String> indexFile = ctx.textFile("s3n://mybucket/input/indexFile.txt",1);
ArrayList<String> localIndex = (ArrayList<String>) indexFile.collect();
final Broadcast<ArrayList<String>> globalIndex = ctx.broadcast(indexVar);
Run Code Online (Sandbox Code Playgroud)
这使程序能够理解变量globalIndex包含的内容.到目前为止它是一个可能适合我的补丁,但我认为它不是最好的解决方案.对于相当大的数据集或大量变量,它仍然有效吗?
注意:我正在使用位于多个EC2实例的独立群集上运行的Spark 1.0.0.
什么是在段中定义的<hz:map>标签中创建的标签之间的区别applicationContext是<hz:config>什么?
它们有什么关系?
我知道<hz:map>in applicationContext会导致创建一个IMap类型的bean,当没有<hz:map>那个时它就不会.
但是,当定义了bean并且随后<hz:map>在hazelcast配置下具有相同名称时,以下配置会执行什么操作?
<hz:map id="loggedInUserMap" name="loggedInUserMap" instance-ref="ipds" scope="singleton" />
<hz:hazelcast id="ipds">
<hz:config>
<hz:instance-name>${hz.instance.name}</hz:instance-name>
<hz:group name="${hz.group.name}" password="${hz.group.password}"/>
<hz:map name="loggedInUserMap" backup-count="1" eviction-policy="NONE" in-memory-format="BINARY">
<hz:near-cache time-to-live-seconds="0" max-idle-seconds="60"
eviction-policy="LRU" max-size="5000" invalidate-on-change="true"/>
</hz:map>
</hz:config>
</hz:hazelcast>
Run Code Online (Sandbox Code Playgroud) 我已经在 Test-1 和 Test-2 下运行,以便在指定 redis 配置值的情况下进行更长时间的性能测试,但我们仍然看到突出显示的 error-1 和 2 消息,并且集群失败了一段时间,我们的处理很少失败。如何解决这个问题呢。
请有人建议避免集群失败超过 10 秒,集群在 3 次重试尝试内没有出现(我们用于重试机制的 spring 重试模板尝试计数设置为 3,并在 5 秒后重试,接下来是指数方式尝试)使用 Jedis 客户端。
错误 1:异步 AOF fsync 耗时太长(磁盘繁忙?)。在不等待 fsync 完成的情况下写入 AOF 缓冲区,这可能会降低 Redis 的速度。
错误 2:将节点 a523100ddfbf844c6d1cc7e0b6a4b3a2aa970aba 标记为失败(达到法定人数)。
测试 1:
Run the test with Redis Setting:
"appendfsync"="yes"
"appendonly"="no"
[root@rdcapdev1-redis-cache3 redis-3.2.5]# src/redis-cli -p 6379
127.0.0.1:6379> CONFIG GET **aof***
1) "auto-aof-rewrite-percentage"
2) "30"
3) "auto-aof-rewrite-min-size"
4) "67108864"
5) "aof-rewrite-incremental-fsync"
6) "yes"
7) "aof-load-truncated"
8) "yes"
127.0.0.1:6379> exit
Run Code Online (Sandbox Code Playgroud)
[root@rdcapdev1-redis-cache3 redis-3.2.5]# src/redis-cli …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 a 存储TreeSet在 a 上,DistributedCache以供 Hadoop 映射缩减作业使用。到目前为止,我已经将文件从 HDFS 添加到DistributedCache:
Configuration conf = new Configuration();
DistributedCache.addCacheFile(new URI("/my/cache/path"), conf);
Job job = new Job(conf, "my job");
// Proceed with remainder of Hadoop map-reduce job set-up and running
Run Code Online (Sandbox Code Playgroud)
如何有效地将 TreeSet(我已经在此类中构建)添加到我要添加到 DistributedCache 的文件中?我应该使用 Java 的本机序列化以某种方式将其序列化到文件中吗?
请注意,TreeSet 在启动 Map-Reduce 作业的主类中构建一次。TreeSet 永远不会被修改,我只是希望每个映射器都可以只读访问此 TreeSet,而不必一遍又一遍地重建它。
我正在尝试实现reduce side join,并使用mapfile reader查找分布式缓存,但是在stderr中检查时它没有查找值,它显示以下错误,lookupfile文件已经存在于hdfs中,并且似乎正确加载进入缓存,如stdout中所示.
java.lang.IllegalArgumentException:Wrong FS:file:/ app/hadoop/tmp/mapred/local/taskTracker/distcache/-8118663285704962921_-1196516983_170706299/localhost/input/delivery_status/DeliveryStatusCodes/data,expected:hdfs:// localhost:9000 org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:390)位于org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus的org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:140) (DistributedFileSystem.java:554)atg.apache.hadoop.fs.FileSystem.getLength(FileSystem.java:816)org.apache.hadoop.io.SequenceFile $ Reader.(SequenceFile.java:1479)org.apache .hadoop.io.SequenceFile $ Reader.(SequenceFile.java:1474)org.apache.hadoop.io.MapFile $ Reader.createDataFileReader(MapFile.java:302)at org.apache.hadoop.io.MapFile $ Reader.打开(MapFile.java:284)org.apache.hadoop.io.MapFile $ Reader.(MapFile.java:273)org.apache.hadoop.io.MapFile $ Reader.(MapFile.java:260)at org .apache.hadoop.io.MapFile $读卡器(MapFile.java:253)在mr_poc.reducerrsj.initializeDepartmentsMap(reducerrsj.java:59)mr_poc.reducerrsj.setup(reducerrsj.java:42)atg.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174)at org.位于org.apache.hadoop.mapred.Child $ 4.run的org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:418)中的apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) .java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:416)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java) :1190)org.apache.hadoop.mapred.Child.main(Child.java:249)mr_poc.reducerrsj.reduce(reducerrsj.java)mr_poc.reducerrsj.buildOutputValue(reducerrsj.java:83)中的java.lang.NullPointerException :127)位于org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.)的org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:177)中的mr_poc.reducerrsj.reduce(reducerrsj.java:1). java:649)at org.apache.hadoop.mapred.ReduceTask.run(Reduc)eTask.java:418)atg.apache.hadoop.mapred.Child $ 4.run(Child.java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject .java:416)在org.apache.hadoop.security.
这是我的驱动程序代码,
package mr_poc;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.filecache.DistributedCache;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class driverrsj extends Configured implements Tool{
@Override …Run Code Online (Sandbox Code Playgroud) 问题:我想缓存用户信息,以便我的所有应用程序都可以快速读取数据,但我只希望一个特定的应用程序能够写入此缓存.
我在AWS上,所以我遇到的一个解决方案是带有两个端口的memcached版本:一个端口只接受读命令,另一个端口接受读写操作.然后,我可以使用安全组来控制访问.
由于我在AWS上,如果有解决方案使用开箱即用的memcached或redis,那就太好了.
memcached caching distributed-cache amazon-web-services redis
我有一个性能用例,通过该用例,我需要确定花费300毫秒以上的某些process()调用EntryProcessor。我尝试使用SlowOperationDetector以下配置。
<!-- SlowOperation Detector Configuration -->
<property name="hazelcast.slow.operation.detector.enabled">true</property>
<property name="hazelcast.slow.operation.detector.stacktrace.logging.enabled">true</property>
<property name="hazelcast.slow.operation.detector.log.purge.interval.seconds">60000</property>
<property name="hazelcast.slow.operation.detector.log.retention.seconds">60000</property>
<property name="hazelcast.slow.operation.detector.threshold.millis">300</property>
Run Code Online (Sandbox Code Playgroud)
我给出了一个示例测试代码,该代码在内部睡眠1秒钟process()。
public static void main(String args[])
{
Config cfg = null;
try {
cfg = new FileSystemXmlConfig("C:\\workarea\\hazelcast\\hazelcast-perf.xml");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(cfg);
IMap<String, Employee> employeesMap = hazelcastInstance.getMap("anyMap");
employeesMap.put("100", new Employee(100));
SlowEntryProcessor slowEntryProcessor = new SlowEntryProcessor();
employeesMap.executeOnKey("100", slowEntryProcessor);
}
static public class SlowEntryProcessor implements EntryProcessor<String, Employee> …Run Code Online (Sandbox Code Playgroud) java distributed-cache distributed-caching hazelcast hazelcast-imap
我最近开始在 dotnet core web api 上使用 IDistributedCache 的 sql 版本。
您将如何删除/使特定用户的一组密钥无效?
即:我构建了遵循此约定的密钥:
/users/{userId}/Key1
/users/{userId}/Key2
/users/{userId}/Section/Key3
Run Code Online (Sandbox Code Playgroud)
我找不到任何方法来删除以下开头的所有键:/users/{userId}
如何一次从 IDistributedCache 中删除一项以上?
hadoop ×5
java ×4
mapreduce ×3
caching ×2
hazelcast ×2
redis ×2
.net-core ×1
apache-spark ×1
distribute ×1
hive ×1
log4j ×1
memcached ×1
spring ×1
sql-server ×1