-RE: Accumulo Configuration Question
Parker, Matthew - IS 2013-01-31, 16:47
>>> Whether tasks timeout can be due to the data and the reduce logic, in addition to the configuration. Are things timing out in the reduce phase?
The job is loading the data in the map phase.
>>> Also, do you notice that it's the same tasktrackers that experience timeouts?
Yes. There are 3-4 that do. I get messages like the following:
2013-01-30 15:34:21,282 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.1.16:50010, storageID=DS-1659690528-192.168.3.16-50010-135543
7253451, infoPort=50075, ipcPort=50020):DataXceiver
java.net.SocketTimeoutException: 480000 millis timeout while waiting for channel to be ready for write. ch : java.nio.channels.SocketChannel[connected local=/192.168.1.1
I adjusted the timeout setting to a large value, including to having the system just wait until it's completed, and things just get worse where the system starts dropping more tasks.
>>> Finally, are you doing MapReduce from HDFS to HDFS? Or are you reading from or writing to Accumulo tables? You alluded to an Accumulo section of your code. Are you reading/writing to/from HFDS but doing scans/lookups/inserts to Accumulo from your mappers or reducers?
Reading text files stored in HDFS and writing data to Accumulo. Just inserting data. Each file has 1 million records, and it'll process anywhere from 1-50 files depending on the run. The job's setup code looks like the following:
Configuration conf = new Configuration();
Job job = new Job(conf, "Load Accumulo Data Table");
boolean createTables = true;
AccumuloOutputFormat.setOutputInfo(job.getConfiguration(), accumuloUserName, accumuloPassword.getBytes(), createTables, dataTable);
AccumuloOutputFormat.setZooKeeperInstance(job.getConfiguration(), zookeeperInstanceName, zookeeperServers);
>>> You can certainly just use one large group of HDFS data nodes and mapreduce and accumulo will work fine. Also - depending on your hardware, you can run all three processes on each node. You just want to make sure each process has enough ram/cpu.
Each node has 16 cpu's, and 48GB of RAM. I set the map/reduce system defaults to
support 8 mappers, and 8 reducers per node and allocated each mapper/reduce 2 GB of memory.
I believe the tablet servers and task trackers are running with their default settings.
From: Aaron Cordova [[EMAIL PROTECTED]]
Sent: Thursday, January 31, 2013 10:57 AM
To: [EMAIL PROTECTED]
Subject: Re: Accumulo Configuration Question
On Jan 31, 2013, at 10:19 AM, "Parker, Matthew - IS" <[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>> wrote:
I'm new to Accumulo and I've been trying to come up with a good architecture for a 20 node cluster. I have been running a map/reduce program, and it encounters issues when it comes to running the Accumulo section of the code. Once the job's completion rate exceeds 93, it starts dropping 10's of tasks during the process, because they eventually timeout. The completion rate drops back down, but it the job eventually finishes. I have a suspicion it's due to the way I have the system configured and I wanted to get some feedback as to what's the generally preferred architecture when installing Accumulo?
Whether tasks timeout can be due to the data and the reduce logic, in addition to the configuration. Are things timing out in the reduce phase?
Also, do you notice that it's the same tasktrackers that experience timeouts?
Finally, are you doing MapReduce from HDFS to HDFS? Or are you reading from or writing to Accumulo tables? You alluded to an Accumulo section of your code. Are you reading/writing to/from HFDS but doing scans/lookups/inserts to Accumulo from your mappers or reducers?
Since you have the choice of installing hdfs, map/reduce, and tablet servers on any three, the general guideline is to install two per machine (data node and table server, or data nodeand map/reduce) as per the Hardware section in the Administration documentation.
Does that mean you have one large group of data nodes that's installed on the majority of the cluster, or are they somehow split into two groups such that map/reduce & hdfs runs on one set of nodes, and Accumulo tablet servers and hdfs uses another?
You can certainly just use one large group of HDFS data nodes and mapreduce and accumulo will work fine. Also - depending on your hardware, you can run all three processes on each node. You just want to make sure each process has enough ram/cpu.
If you want to keep Accumulo IO somewhat isolated from MapReduce you can control the location of HDFS block replicas to a certain degree to achieve more independence of failures and IO. Of course writing to or reading from Accumulo in a MapReduce will still absorb resources from the Acc