Understood, thank you!

Gregorio

> Date: Sun, 20 Mar 2016 17:22:53 -0700
> Subject: Re: Possible path bug
> From: [email protected]
> To: [email protected]
> 
> Hi Gregorio,
> 
> ${BASH_SOURCE-$0} is not a bug.  That is a short hand notation for locating
> the script's directory.  There are some legacy reasons for this arrangement.
> 
> $bin in hadoop-daemon[s].sh are designed to run in both development and
> binary deployment environment.  Where $bin is hadoop source bin in
> development, and $bin is $HADOOP_PREFIX/sbin in binary deployed environment.
> 
> hadoop-daemons.sh is the top layer of ssh to multiple nodes to start
> demonized processes.
> 
> hadoop-daemon.sh is invoked by hadoop-daemons.sh to actually demonize the
> Hadoop services.  hadoop-daemon.sh resolves the location of hdfs script
> base on environment variable in line 152-164.
> 
> hdfs scripts are designed to run in foreground for user interaction, debug
> purpose or having some layer of provisioning system to run Hadoop processes
> and attach hadoop process as spawning child process.
> 
> It is easy to misinterpret $bin variable due to the context switch in
> development environment and binary deployed environment.
> The development environment arrangement was for Hadoop prior to
> mavenization.  I doubt running bin/* from hadoop source is still supported.
> 
> There are still traces of hdfs script that utilize $bin variable directly
> without detecting if the script is running in source directory or binary
> deployment layout.  Those are bugs that could get new developers into
> trouble.  My recommendation is to avoid running the scripts from source to
> avoid the bugs introduced in HADOOP-7106.  In HADOOP-6255, system admin
> related script were moved in $HADOOP_PREFIX/sbin instead of
> $HADOOP_PREFIX/bin.  This change can be confusing, when developers used to
> do things one way.
> 
> Hope this answers helps.
> 
> regards,
> Eric
> 
> On Sun, Mar 20, 2016 at 9:34 AM, Gregorio . <[email protected]> wrote:
> 
> > Hello,
> >
> > I'm new and I'm try for the first time to use hadoop (version 2.6.4). I
> > downloaded the binaries from the official site (
> > http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
> > ).
> >
> > I noticied something strange. In the hadoop folder, inside sbin there is
> > the start-dfs.sh script. I changed it putting an echo at the beginning of
> > the line 60.
> >
> > When I run the start-dfs.sh I saw this:
> >
> > $ hadoop-2.6.4/sbin/start-dfs.sh
> >
> > Starting namenodes on [localhost]
> > /home/myuser/Desktop/Download/hadoop-2.6.4/sbin/hadoop-daemons.sh --config
> > /home/myuser/Desktop/Download/hadoop-2.6.4/etc/hadoop --hostnames localhost
> > --script /home/myuser/Desktop/Download/hadoop-2.6.4/sbin/hdfs start namenode
> > Starting secondary namenodes [0.0.0.0]
> >
> > but in the sbin folder there isn't hdfs, because it is in the bin folder.
> > I found the error comes from the line 25:
> >
> > bin=`dirname "${BASH_SOURCE-$0}"`
> >
> > where $BASH_SOURCE is hadoop-2.6.4/sbin/start-dfs.sh
> >
> > is this a bug? or am I doing some kind of mistake?
> >
> > I add here another little question:
> > if I try to do:
> >
> > $ bin/hdfs start namenode
> >
> > I got:
> >
> > Could not find or load main class start
> >
> > but if I try to do:
> >
> > $ bin/hdfs namenode
> >
> > seems start correctly. Is this the expected behaviour?
> > because I saw "bin/hdfs start namenode" is also used by start-dfs.sh
> >
> > Thank you all,
> > Gregorio
> >
                                          

Reply via email to