|
|
-
Re: Using a hard drive instead of
Ravi Prakash 2012-10-13, 03:46
Maybe at a slight tangent, but for each write operation on HDFS (e.g. create a file, delete a file, create a directory), the NN waits until the edit has been *flushed* to disk. So I can imagine such a hypothetical(?) disk would tremendously speed up the NN even as it is. Mark, can you please please please send me 5 of these disks? :-P
To answer your question, you probably want to change BlockManager and FSNamesystem, both basically being the crux of HDFS NN. Its going to be a pretty significant undertaking. @memory-mapped files would lose data in case of failure (unless ofcourse you use special hardware, thinking of which, really its not soooo special, so maybe worth trying). Has anyone tried this before?
________________________________ From: Lance Norskog <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Sent: Friday, October 12, 2012 12:01 AM Subject: Re: Using a hard drive instead of This is why memory-mapped files were invented.
On Thu, Oct 11, 2012 at 9:34 PM, Gaurav Sharma <[EMAIL PROTECTED]> wrote: > If you don't mind sharing, what hard drive do you have with these > properties: > -"performance of RAM" > -"can accommodate very many threads" > > > On Oct 11, 2012, at 21:27, Mark Kerzner <[EMAIL PROTECTED]> wrote: > > Harsh, > > I agree with you about many small files, and I was giving this only in way > of example. However, the hard drive I am talking about can be 1-2 TB in > size, and that's pretty good, you can't easily get that much memory. In > addition, it would be more resistant to power failures than RAM. And yes, it > has the performance of RAM, and can accommodate very many threads. > > Mark > > On Thu, Oct 11, 2012 at 11:16 PM, Harsh J <[EMAIL PROTECTED]> wrote: >> >> Hi Mark, >> >> Note that the NameNode does random memory access to serve back any >> information or mutate request you send to it, and that there can be >> several number of concurrent clients. So do you mean a 'very fast hard >> drive' thats faster than the RAM for random access itself? The >> NameNode does persist its block information onto disk for various >> purposes, but to actually make the NameNode use disk storage >> completely (and not specific parts of it disk-cached instead) wouldn't >> make too much sense to me. That'd feel like trying to communicate with >> a process thats swapping, performance-wise. >> >> The too many files issue is bloated up to sound like its a NameNode >> issue but it isn't in reality. HDFS allows you to process lots of >> files really fast, aside of helping store them for long periods, and a >> lot of tiny files only gets you down in such operations with overheads >> of opening and closing files in the way of reading them all at a time. >> With a single or a few large files, all you do is block (data) reads, >> and very few NameNode communications - ending up going much faster. >> This is the same for local filesystems as well, but not many think of >> that. >> >> On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED]> >> wrote: >> > Hi, >> > >> > Imagine I have a very fast hard drive that I want to use for the >> > NameNode. >> > That is, I want the NameNode to store its blocks information on this >> > hard >> > drive instead of in memory. >> > >> > Why would I do it? Scalability (no federation needed), many files are >> > not a >> > problem, and warm fail-over is automatic. What would I need to change in >> > the >> > NameNode to tell it to use the hard drive? >> > >> > Thank you, >> > Mark >> >> >> >> -- >> Harsh J > >
-- Lance Norskog [EMAIL PROTECTED]
+
Ravi Prakash 2012-10-13, 03:46
-
Re: Using a hard drive instead of
Mark Kerzner 2012-10-14, 04:07
Thank you, everybody, for your input - it was very useful. I need to do my homework now, and I will be back with the update. The device really exists. It is not cheap, but it may make sense as the NN of a serious cluster.
Sincerely, Mark
On Fri, Oct 12, 2012 at 10:46 PM, Ravi Prakash <[EMAIL PROTECTED]> wrote:
> Maybe at a slight tangent, but for each write operation on HDFS (e.g. > create a file, delete a file, create a directory), the NN waits until the > edit has been *flushed* to disk. So I can imagine such a hypothetical(?) > disk would tremendously speed up the NN even as it is. Mark, can you please > please please send me 5 of these disks? :-P > To answer your question, you probably want to change BlockManager and > FSNamesystem, both basically being the crux of HDFS NN. Its going to be a > pretty significant undertaking. > @memory-mapped files would lose data in case of failure (unless ofcourse > you use special hardware, thinking of which, really its not soooo special, > so maybe worth trying). Has anyone tried this before? > > ------------------------------ > *From:* Lance Norskog <[EMAIL PROTECTED]> > *To:* [EMAIL PROTECTED] > *Sent:* Friday, October 12, 2012 12:01 AM > > *Subject:* Re: Using a hard drive instead of > > This is why memory-mapped files were invented. > > On Thu, Oct 11, 2012 at 9:34 PM, Gaurav Sharma > <[EMAIL PROTECTED]> wrote: > > If you don't mind sharing, what hard drive do you have with these > > properties: > > -"performance of RAM" > > -"can accommodate very many threads" > > > > > > On Oct 11, 2012, at 21:27, Mark Kerzner <[EMAIL PROTECTED]> > wrote: > > > > Harsh, > > > > I agree with you about many small files, and I was giving this only in > way > > of example. However, the hard drive I am talking about can be 1-2 TB in > > size, and that's pretty good, you can't easily get that much memory. In > > addition, it would be more resistant to power failures than RAM. And > yes, it > > has the performance of RAM, and can accommodate very many threads. > > > > Mark > > > > On Thu, Oct 11, 2012 at 11:16 PM, Harsh J <[EMAIL PROTECTED]> wrote: > >> > >> Hi Mark, > >> > >> Note that the NameNode does random memory access to serve back any > >> information or mutate request you send to it, and that there can be > >> several number of concurrent clients. So do you mean a 'very fast hard > >> drive' thats faster than the RAM for random access itself? The > >> NameNode does persist its block information onto disk for various > >> purposes, but to actually make the NameNode use disk storage > >> completely (and not specific parts of it disk-cached instead) wouldn't > >> make too much sense to me. That'd feel like trying to communicate with > >> a process thats swapping, performance-wise. > >> > >> The too many files issue is bloated up to sound like its a NameNode > >> issue but it isn't in reality. HDFS allows you to process lots of > >> files really fast, aside of helping store them for long periods, and a > >> lot of tiny files only gets you down in such operations with overheads > >> of opening and closing files in the way of reading them all at a time. > >> With a single or a few large files, all you do is block (data) reads, > >> and very few NameNode communications - ending up going much faster. > >> This is the same for local filesystems as well, but not many think of > >> that. > >> > >> On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED] > > > >> wrote: > >> > Hi, > >> > > >> > Imagine I have a very fast hard drive that I want to use for the > >> > NameNode. > >> > That is, I want the NameNode to store its blocks information on this > >> > hard > >> > drive instead of in memory. > >> > > >> > Why would I do it? Scalability (no federation needed), many files are > >> > not a > >> > problem, and warm fail-over is automatic. What would I need to change > in > >> > the > >> > NameNode to tell it to use the hard drive? > >> > > >> > Thank you, > >> > Mark
+
Mark Kerzner 2012-10-14, 04:07
-
Using a hard drive instead of
Mark Kerzner 2012-10-12, 03:59
Hi,
Imagine I have a very fast hard drive that I want to use for the NameNode. That is, I want the NameNode to store its blocks information on this hard drive instead of in memory.
Why would I do it? Scalability (no federation needed), many files are not a problem, and warm fail-over is automatic. What would I need to change in the NameNode to tell it to use the hard drive?
Thank you, Mark
+
Mark Kerzner 2012-10-12, 03:59
-
Re: Using a hard drive instead of
Harsh J 2012-10-12, 04:16
Hi Mark,
Note that the NameNode does random memory access to serve back any information or mutate request you send to it, and that there can be several number of concurrent clients. So do you mean a 'very fast hard drive' thats faster than the RAM for random access itself? The NameNode does persist its block information onto disk for various purposes, but to actually make the NameNode use disk storage completely (and not specific parts of it disk-cached instead) wouldn't make too much sense to me. That'd feel like trying to communicate with a process thats swapping, performance-wise.
The too many files issue is bloated up to sound like its a NameNode issue but it isn't in reality. HDFS allows you to process lots of files really fast, aside of helping store them for long periods, and a lot of tiny files only gets you down in such operations with overheads of opening and closing files in the way of reading them all at a time. With a single or a few large files, all you do is block (data) reads, and very few NameNode communications - ending up going much faster. This is the same for local filesystems as well, but not many think of that.
On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED]> wrote: > Hi, > > Imagine I have a very fast hard drive that I want to use for the NameNode. > That is, I want the NameNode to store its blocks information on this hard > drive instead of in memory. > > Why would I do it? Scalability (no federation needed), many files are not a > problem, and warm fail-over is automatic. What would I need to change in the > NameNode to tell it to use the hard drive? > > Thank you, > Mark
-- Harsh J
+
Harsh J 2012-10-12, 04:16
-
Re: Using a hard drive instead of
Mark Kerzner 2012-10-12, 04:27
Harsh,
I agree with you about many small files, and I was giving this only in way of example. However, the hard drive I am talking about can be 1-2 TB in size, and that's pretty good, you can't easily get that much memory. In addition, it would be more resistant to power failures than RAM. And yes, it has the performance of RAM, and can accommodate very many threads.
Mark
On Thu, Oct 11, 2012 at 11:16 PM, Harsh J <[EMAIL PROTECTED]> wrote:
> Hi Mark, > > Note that the NameNode does random memory access to serve back any > information or mutate request you send to it, and that there can be > several number of concurrent clients. So do you mean a 'very fast hard > drive' thats faster than the RAM for random access itself? The > NameNode does persist its block information onto disk for various > purposes, but to actually make the NameNode use disk storage > completely (and not specific parts of it disk-cached instead) wouldn't > make too much sense to me. That'd feel like trying to communicate with > a process thats swapping, performance-wise. > > The too many files issue is bloated up to sound like its a NameNode > issue but it isn't in reality. HDFS allows you to process lots of > files really fast, aside of helping store them for long periods, and a > lot of tiny files only gets you down in such operations with overheads > of opening and closing files in the way of reading them all at a time. > With a single or a few large files, all you do is block (data) reads, > and very few NameNode communications - ending up going much faster. > This is the same for local filesystems as well, but not many think of > that. > > On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED]> > wrote: > > Hi, > > > > Imagine I have a very fast hard drive that I want to use for the > NameNode. > > That is, I want the NameNode to store its blocks information on this hard > > drive instead of in memory. > > > > Why would I do it? Scalability (no federation needed), many files are > not a > > problem, and warm fail-over is automatic. What would I need to change in > the > > NameNode to tell it to use the hard drive? > > > > Thank you, > > Mark > > > > -- > Harsh J >
+
Mark Kerzner 2012-10-12, 04:27
-
Re: Using a hard drive instead of
Gaurav Sharma 2012-10-12, 04:34
If you don't mind sharing, what hard drive do you have with these properties: -"performance of RAM" -"can accommodate very many threads" On Oct 11, 2012, at 21:27, Mark Kerzner <[EMAIL PROTECTED]> wrote:
> Harsh, > > I agree with you about many small files, and I was giving this only in way of example. However, the hard drive I am talking about can be 1-2 TB in size, and that's pretty good, you can't easily get that much memory. In addition, it would be more resistant to power failures than RAM. And yes, it has the performance of RAM, and can accommodate very many threads. > > Mark > > On Thu, Oct 11, 2012 at 11:16 PM, Harsh J <[EMAIL PROTECTED]> wrote: >> Hi Mark, >> >> Note that the NameNode does random memory access to serve back any >> information or mutate request you send to it, and that there can be >> several number of concurrent clients. So do you mean a 'very fast hard >> drive' thats faster than the RAM for random access itself? The >> NameNode does persist its block information onto disk for various >> purposes, but to actually make the NameNode use disk storage >> completely (and not specific parts of it disk-cached instead) wouldn't >> make too much sense to me. That'd feel like trying to communicate with >> a process thats swapping, performance-wise. >> >> The too many files issue is bloated up to sound like its a NameNode >> issue but it isn't in reality. HDFS allows you to process lots of >> files really fast, aside of helping store them for long periods, and a >> lot of tiny files only gets you down in such operations with overheads >> of opening and closing files in the way of reading them all at a time. >> With a single or a few large files, all you do is block (data) reads, >> and very few NameNode communications - ending up going much faster. >> This is the same for local filesystems as well, but not many think of >> that. >> >> On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED]> wrote: >> > Hi, >> > >> > Imagine I have a very fast hard drive that I want to use for the NameNode. >> > That is, I want the NameNode to store its blocks information on this hard >> > drive instead of in memory. >> > >> > Why would I do it? Scalability (no federation needed), many files are not a >> > problem, and warm fail-over is automatic. What would I need to change in the >> > NameNode to tell it to use the hard drive? >> > >> > Thank you, >> > Mark >> >> >> >> -- >> Harsh J >
+
Gaurav Sharma 2012-10-12, 04:34
-
Re: Using a hard drive instead of
Lance Norskog 2012-10-12, 05:01
This is why memory-mapped files were invented.
On Thu, Oct 11, 2012 at 9:34 PM, Gaurav Sharma <[EMAIL PROTECTED]> wrote: > If you don't mind sharing, what hard drive do you have with these > properties: > -"performance of RAM" > -"can accommodate very many threads" > > > On Oct 11, 2012, at 21:27, Mark Kerzner <[EMAIL PROTECTED]> wrote: > > Harsh, > > I agree with you about many small files, and I was giving this only in way > of example. However, the hard drive I am talking about can be 1-2 TB in > size, and that's pretty good, you can't easily get that much memory. In > addition, it would be more resistant to power failures than RAM. And yes, it > has the performance of RAM, and can accommodate very many threads. > > Mark > > On Thu, Oct 11, 2012 at 11:16 PM, Harsh J <[EMAIL PROTECTED]> wrote: >> >> Hi Mark, >> >> Note that the NameNode does random memory access to serve back any >> information or mutate request you send to it, and that there can be >> several number of concurrent clients. So do you mean a 'very fast hard >> drive' thats faster than the RAM for random access itself? The >> NameNode does persist its block information onto disk for various >> purposes, but to actually make the NameNode use disk storage >> completely (and not specific parts of it disk-cached instead) wouldn't >> make too much sense to me. That'd feel like trying to communicate with >> a process thats swapping, performance-wise. >> >> The too many files issue is bloated up to sound like its a NameNode >> issue but it isn't in reality. HDFS allows you to process lots of >> files really fast, aside of helping store them for long periods, and a >> lot of tiny files only gets you down in such operations with overheads >> of opening and closing files in the way of reading them all at a time. >> With a single or a few large files, all you do is block (data) reads, >> and very few NameNode communications - ending up going much faster. >> This is the same for local filesystems as well, but not many think of >> that. >> >> On Fri, Oct 12, 2012 at 9:29 AM, Mark Kerzner <[EMAIL PROTECTED]> >> wrote: >> > Hi, >> > >> > Imagine I have a very fast hard drive that I want to use for the >> > NameNode. >> > That is, I want the NameNode to store its blocks information on this >> > hard >> > drive instead of in memory. >> > >> > Why would I do it? Scalability (no federation needed), many files are >> > not a >> > problem, and warm fail-over is automatic. What would I need to change in >> > the >> > NameNode to tell it to use the hard drive? >> > >> > Thank you, >> > Mark >> >> >> >> -- >> Harsh J > >
-- Lance Norskog [EMAIL PROTECTED]
+
Lance Norskog 2012-10-12, 05:01
-
Re: Using a hard drive instead of
Colin Patrick McCabe 2012-10-17, 22:37
The direct answer to your question us to use this theoretical super-fast hard drive as Linux swap space.
The better answer is to use federation or another solution if your needs exceed those servable by a single NameNode.
Cheers. Colin On Oct 11, 2012 9:00 PM, "Mark Kerzner" <[EMAIL PROTECTED]> wrote:
> Hi, > > Imagine I have a very fast hard drive that I want to use for the NameNode. > That is, I want the NameNode to store its blocks information on this hard > drive instead of in memory. > > Why would I do it? Scalability (no federation needed), many files are not > a problem, and warm fail-over is automatic. What would I need to change in > the NameNode to tell it to use the hard drive? > > Thank you, > Mark >
+
Colin Patrick McCabe 2012-10-17, 22:37
-
Re: Using a hard drive instead of
Michael Segel 2012-10-17, 23:27
Meh.
If you are worried about the memory constraints of a Linux system, I'd say go with MapR and their CLDB.
I just did a quick look at Supermico servers and found that on a 2u server 768GB was the max. So how many blocks can you store in that much memory? I only have 10 fingers and toes so I can't count that high. ;-)
Assuming that you use 64MB blocks what's that max size? Switching to 128MB blocks what's the max size then?
From Tom White's blog "Every file, directory and block in HDFS is represented as an object in the nam- enode’s memory, each of which occupies 150 bytes, as a rule of thumb. So 10 million files, each using a block, would use about 3 gigabytes of memory. Scaling up much beyond this level is a problem with current hardware. Certainly a billion files is not feasible."
So 10 million blocks in 3GB. 1x10^7 * 200 = 6*10^9 blocks in 600GB of memory.
Thats 6 Billion blocks. At 64MB that's 384 Billion MBs which off the top of my head, is 384 PB? (Ok, I'll admit that makes my head spin so someone may want to check my math....)
The point is that its possible to build out your control nodes with more than enough memory to handle the largest cluster you can build with Map/Reduce 1.x (Pre YARN)
I am skeptical of Federation.
Just Saying...
-Mike On Oct 17, 2012, at 5:37 PM, Colin Patrick McCabe <[EMAIL PROTECTED]> wrote:
> The direct answer to your question us to use this theoretical super-fast hard drive as Linux swap space. > > The better answer is to use federation or another solution if your needs exceed those servable by a single NameNode. > > Cheers. > Colin > > On Oct 11, 2012 9:00 PM, "Mark Kerzner" <[EMAIL PROTECTED]> wrote: > Hi, > > Imagine I have a very fast hard drive that I want to use for the NameNode. That is, I want the NameNode to store its blocks information on this hard drive instead of in memory. > > Why would I do it? Scalability (no federation needed), many files are not a problem, and warm fail-over is automatic. What would I need to change in the NameNode to tell it to use the hard drive? > > Thank you, > Mark
+
Michael Segel 2012-10-17, 23:27
-
Re: Using a hard drive instead of
Mark Kerzner 2012-10-17, 22:44
Colin,
swap space would give me very high memory, up to 1 TB, say, but it won't protect me from power failure. Very large clusters is only one application of this idea, warm failover is another. The drive is not theoretical, just look at the price tag :)
Mark
On Wed, Oct 17, 2012 at 5:37 PM, Colin Patrick McCabe <[EMAIL PROTECTED]>wrote:
> The direct answer to your question us to use this theoretical super-fast > hard drive as Linux swap space. > > The better answer is to use federation or another solution if your needs > exceed those servable by a single NameNode. > > Cheers. > Colin > On Oct 11, 2012 9:00 PM, "Mark Kerzner" <[EMAIL PROTECTED]> wrote: > >> Hi, >> >> Imagine I have a very fast hard drive that I want to use for the >> NameNode. That is, I want the NameNode to store its blocks information on >> this hard drive instead of in memory. >> >> Why would I do it? Scalability (no federation needed), many files are not >> a problem, and warm fail-over is automatic. What would I need to change in >> the NameNode to tell it to use the hard drive? >> >> Thank you, >> Mark >> >
+
Mark Kerzner 2012-10-17, 22:44
-
Re: Using a hard drive instead of
Colin McCabe 2012-10-17, 23:21
Hi Mark,
HDFS contains a write-ahead log which will protect you from power failure. It's called the edit log. If you want warm failover, you can use HDFS HA, which is available in recent versions of HDFS.
Hope this helps. Colin On Wed, Oct 17, 2012 at 3:44 PM, Mark Kerzner <[EMAIL PROTECTED]> wrote: > Colin, > > swap space would give me very high memory, up to 1 TB, say, but it won't > protect me from power failure. Very large clusters is only one application > of this idea, warm failover is another. The drive is not theoretical, just > look at the price tag :) > > Mark > > > On Wed, Oct 17, 2012 at 5:37 PM, Colin Patrick McCabe <[EMAIL PROTECTED]> > wrote: >> >> The direct answer to your question us to use this theoretical super-fast >> hard drive as Linux swap space. >> >> The better answer is to use federation or another solution if your needs >> exceed those servable by a single NameNode. >> >> Cheers. >> Colin >> >> On Oct 11, 2012 9:00 PM, "Mark Kerzner" <[EMAIL PROTECTED]> wrote: >>> >>> Hi, >>> >>> Imagine I have a very fast hard drive that I want to use for the >>> NameNode. That is, I want the NameNode to store its blocks information on >>> this hard drive instead of in memory. >>> >>> Why would I do it? Scalability (no federation needed), many files are not >>> a problem, and warm fail-over is automatic. What would I need to change in >>> the NameNode to tell it to use the hard drive? >>> >>> Thank you, >>> Mark > >
+
Colin McCabe 2012-10-17, 23:21
|
|