You only specify the script on the namenode. So, you could do something like:
#!/bin/bash #rack_decider.sh if [ $1 = "server1.mydomain" -o $1 = "192.168.0.1" ] ; then echo rack1 elif [ $1 = "server2.mydomain" -o $1 = "192.168.0.2" ] ; then echo rack1 elif [ $1 = "server3.mydomain" -o $1 = "192.168.0.3" ] ; then echo rack2 elif [ $1 = "server4.mydomain" -o $1 = "192.168.0.4" ] ; then echo rack2 else echo unknown_rack fi # EOF Of course, this is by far the most basic script you could have (I'm not sure why it wasn't offered as an example instead of a more complicated one). On Thu, Mar 18, 2010 at 8:41 PM, Mag Gam <magaw...@gmail.com> wrote: > Chris: > > This clears up my questions a lot! Thankyou. > > So, if I have 4 data servers and I want 2 racks. I can do this > > #!/bin/bash > #rack1.sh > echo rack1 > > #bin/bash > #rack2.sh > echo rack2 > > > So, I can do this for 2 servers > > > <property> > <name>topology.script.file.name</name> > <value>rack1.sh</value> > </property> > > And for the other 2 servers, I can do this: > > > <property> > <name>topology.script.file.name</name> > <value>rack2.sh</value> > </property> > > > correct? > > > On Thu, Mar 18, 2010 at 3:15 AM, Christopher Tubbs <ctubb...@gmail.com> wrote: >> Hadoop will identify data nodes in your cluster by name and execute >> your script with the data node as an argument. The expected output of >> your script is the name of the rack on which it is located. >> >> The script you referenced takes the node name as an argument ($1), and >> crawls through a separate file looking up that node in the left >> column, and printing the value in the second column if it finds it. >> >> If you were to use this script, you would just create the topology >> file that lists all your nodes by name/ip on the left and the rack >> they are in on the right. >> >> On Wed, Mar 17, 2010 at 11:34 PM, Mag Gam <magaw...@gmail.com> wrote: >>> Well, I didn't really solve the problem. Now I have even more questions. >>> >>> I came across this script, >>> http://wiki.apache.org/hadoop/topology_rack_awareness_scripts >>> >>> but it makes no sense to me! Can someone please try to explain what >>> its trying to do? >>> >>> >>> MikeThomas: >>> >>> Your script isn't working for me. I think there are some syntax >>> errors. Is this how its supposed to look: http://pastebin.ca/1844287 >>> >>> thanks >>> >>> >>> >>> On Thu, Mar 4, 2010 at 10:30 PM, Jeff Hammerbacher <ham...@cloudera.com> >>> wrote: >>>> Hey Mag, >>>> >>>> Glad you have solved the problem. I've created a JIRA ticket to improve the >>>> existing documentation: https://issues.apache.org/jira/browse/HADOOP-6616. >>>> If you have some time, it would be useful to hear what could be added to >>>> the >>>> existing documentation that would have helped you figure this out sooner. >>>> >>>> Thanks, >>>> Jeff >>>> >>>> On Thu, Mar 4, 2010 at 3:39 PM, Mag Gam <magaw...@gmail.com> wrote: >>>> >>>>> Thanks everyone for explaining this to me instead of giving me RTFM! >>>>> >>>>> I will play around with it and see how far I get. >>>>> >>>>> >>>>> >>>>> On Thu, Mar 4, 2010 at 9:21 AM, Steve Loughran <ste...@apache.org> wrote: >>>>> > Allen Wittenauer wrote: >>>>> >> >>>>> >> On 3/3/10 5:01 PM, "Mag Gam" <magaw...@gmail.com> wrote: >>>>> >> >>>>> >>> Thanks Alan! Your presentation is very nice! >>>>> >> >>>>> >> Thanks. :) >>>>> >> >>>>> >>> "If you don't provide a script for rack awareness, it treats every >>>>> >>> node as if it was its own rack". I am using the default settings and >>>>> >>> the report still says only 1 rack. >>>>> >> >>>>> >> Let's take a different approach to convince you. :) >>>>> >> >>>>> >> Think about the question: Is there a difference between all nodes in >>>>> one >>>>> >> rack vs. every node acting as a lone rack? >>>>> >> >>>>> >> The answer is no, there isn't any difference. In both cases, all >>>>> >> copies >>>>> >> of >>>>> >> the blocks can go to pretty much any node. When a MR job runs, every >>>>> node >>>>> >> would either be considered 'off rack' or 'rack-local'. >>>>> >> >>>>> >> So there is no difference. >>>>> >> >>>>> >> >>>>> >>> Do you mind sharing a script with us on how you determine a rack? and >>>>> >>> a sample <configuration> </configuration> syntax? >>>>> >> >>>>> >> Michael has already posted his, so I'll skip this one. :) >>>>> >> >>>>> > >>>>> > Think Mag probably wanted a shell script. >>>>> > >>>>> > Mag, give your machines IPv4 addresses that map to rack number. 10.1.1.* >>>>> for >>>>> > rack one, 10.1.2.* for rack 2, etc. Then just filter out the IP address >>>>> by >>>>> > the top bytes, returning "10.1.1" for everything in rack one, "10.1.2" >>>>> for >>>>> > rack 2; Hadoop will be happy >>>>> > >>>>> >>>> >>> >> >