MapReduce в Hadoop дает лимит накладных расходов GC, превышаемый при использовании файлов более 200 МБJAVA

Программисты JAVA общаются здесь
Anonymous
MapReduce в Hadoop дает лимит накладных расходов GC, превышаемый при использовании файлов более 200 МБ

Сообщение Anonymous »

Я запускаю код MapReduce в кластере Hadoop Multi-Node (2.4.1). Я получаю ошибку GC, превышающую, когда я пытаюсь запустить 2 входных файлов размеров 200 МБ и 200 МБ. Это работает отлично и получил правильный вывод, когда я использую очень маленькие файлы.

Моя цель-сравнить каждую запись потока в 1-м файле с каждой рекордной потоком во 2-м файле и расстояние вычисления, а затем взять 10 максимальных значений и вывод на восстановление на основе этих 10 максимумов. values.

Example flow record in both files - 194.144.0.27|192.168.1.5|0.0.0.0|0|0|2|104|1410985350|1410985350|51915|51413|6|6

Here is Mapper Class:
класс Mapper: < /strong>

< /p>
public class mapper extends Mapper
{

private final static IntWritable five = new IntWritable(5);

private Text counter1;

ArrayList lines = new ArrayList();
String str;
BufferedReader br,in;
int ddos_line = 0;
int normal_line = 0,total_testing_records=4000;
int K = 10;

@Override
protected void setup(Context context) throws IOException, InterruptedException
{
//BufferedReader in = new BufferedReader(new FileReader("normal"));

Configuration conf = context.getConfiguration();
URI[] cachefiles = context.getCacheFiles();

FileSystem fs = FileSystem.get(new Configuration());
FileStatus[] status = fs.listStatus(new Path(cachefiles[0].toString()));
BufferedReader in=new BufferedReader(new InputStreamReader(fs.open(status[0].getPath())));

while((str = in.readLine()) != null)
{
lines.add(str);
}
in.close();
//System.out.println("na netti");
}

@Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException
{

String line1 = value.toString();
ddos_line++;
normal_line = 0;

double[] count = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
int[] lineIndex = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

String[] parts = line1.split("\\|");
String[] linesArray = lines.toArray(new String[lines.size()]);

boolean bool = true;
int t1=0;
double sum=0;
while (bool)
{
for(int i=0; i

Подробнее здесь: https://stackoverflow.com/questions/271 ... over-200mb

Вернуться в «JAVA»