这个文件中设置的是Hadoop运行时须要的环境变量,在1.2.1版中共有19个环境变量,以下:html
变量名称java |
默认值node |
说明ubuntu |
JAVA_HOME服务器 |
|
设置JDK的路径,这个必须设置,不然Hadoop没法启动,值如:框架 /usr/local/jdk1.6.0_33jsp |
HADOOP_CLASSPATHtcp |
空oop |
这个用以设置用户的类路径,也能够在执行计算以前设置测试 |
HADOOP_HEAPSIZE |
1000m |
设置Hadoop堆的大小,根据本身环境的实际状况进行设置了。 |
HADOOP_OPTS |
-server |
Hadoop启动时的JVM参数,默认是以server模式启动,能够加入-X或-XX之类的参数 |
HADOOP_NAMENODE_OPTS |
-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS |
该选项的值会附加到HADOOP_OPTS以后,在启动NameNode时设置的JVM参数。 如想手动设置NameNode的堆、垃圾回收等信息,能够在这里设置: export HADOOP_NAMENODE_OPTS="-Xmx2g -XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}" 其它的节点相似设置。 |
HADOOP_SECONDARYNAMENODE_OPTS |
-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS |
该选项的值会附加到HADOOP_OPTS以后,在启动SecondaryNameNode时设置的JVM参数 |
HADOOP_DATANODE_OPTS |
-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS |
该选项的值会附加到HADOOP_OPTS以后,在启动DataNode时设置的JVM参数 |
HADOOP_BALANCER_OPTS |
-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS |
该选项的值会附加到HADOOP_OPTS以后,在启动BalancerNode时设置的JVM参数 |
HADOOP_JOBTRACKER_OPTS |
-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS |
该选项的值会附加到HADOOP_OPTS以后,在启动JobTracker时设置的JVM参数 |
HADOOP_TASKTRACKER_OPTS |
空 |
该选项的值会附加到HADOOP_OPTS以后,在启动TaskTracker时设置的JVM参数 |
HADOOP_CLIENT_OPTS |
空 |
该选项增长的参数,将会做用于多个命令,如fs, dfs, fsck, distcp等 |
HADOOP_SSH_OPTS |
空 |
SSH链接的选项,值能够是以下这样: -o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR |
HADOOP_LOG_DIR |
${HADOOP_HOME}/logs |
日志文件存放的目录 |
HADOOP_SLAVES |
$HADOOP_HOME/conf/slaves |
Slaves所在的配置文件,每行配置一个slave |
HADOOP_MASTER |
master:/home/$USER/src/hadoop |
用于设置Hadoop代码的同步目录。 |
HADOOP_SLAVE_SLEEP |
0.1
|
用于设置slave往master发送命令的时间停顿,单位为秒。 这个在大型的集群之中很是有用,master才有足够的时间来处理这些请求。 |
HADOOP_PID_DIR |
/tmp |
Hadoop PID文件的存放目录,这个最好是修改一下,由于/tmp目录一般来讲是任何人均可以访问的,有可能存在符合连接攻击的风险。 |
HADOOP_IDENT_STRING |
$USER |
用于表明当前的Hadoop实例。 |
HADOOP_NICENESS |
10 |
Hadoop守护进行的定时优先级,能够经过“man nice”获取更多信息 |
一般来讲,咱们只须要关注JAVA_HOME、HADOOP_HEAP_SIZE、HADOOP_PID_DIR这几个,固然其它的也须要注意了,对其所有了解了才可以更加充分的发挥其能力,面临问题的时候才会知道从哪些方面去入手解决。
JAVA_HOME:
JAVA_HOME是必须设置的,即便咱们当前的系统中设置了JAVA_HOME,它也是不认识的,由于Hadoop即便是在本机上执行,它也是把当前的执行环境当成远程服务器,设置JAVA_HOME环境变量:
export JAVA_HOME=/usr/local/jdk1.6.0_33 |
若是使用的是Mac OS X系统,那么在启动hdsf的NameNode和secondaryNameNode时,会报出Unable to load realm info from SCDynamicStore 的错误提示,解决该问题的办法是,在hadoop-env.sh文件里面增长一行:
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk" |
详见文章:http://gauss-deng.iteye.com/blog/1370295
HADOOP_HEAPSIZE:
还可根据实际状况设置HADOOP_HEAPSIZE的值,单为mb,若是不设置默认值是1000,个人内存没有这么大而且测试用例不会用到那么大的堆,因此我也设置了一个这个值。
export HADOOP_HEAPSIZE=20 |
HADOOP_PID_DIR:
Hadoop PID文件的存放目录,这个最好是修改一下,由于/tmp目录一般来讲是任何人均可以访问的,有可能存在符合连接攻击的风险。
export HADOOP_PID_DIR=/home/fenglibin/hadoop_tmp |
参数以下(部分):
参数 |
默认值 |
说明 |
fs.default.name |
file:/// |
NameNode的URI,如: hdfs://locahost:9000/ |
hadoop.tmp.dir |
/tmp/hadoop-${user.name} |
其它临时目录的基本目录, /home/fenglibin/hadoop_tmp |
hadoop.native.lib |
true |
是否使用hadoop的本地库 |
hadoop.http.filter.initializers |
空 |
设置Filter初使器,这些Filter必须是hadoop.http.filter.initializers的子类,能够同时设置多个,以逗号分隔。这些设置的Filter,将会对全部用户的jsp及servlet页面起做用,Filter的顺序与配置的顺序相同。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
配置示例:
<configuration> <property> <!-- 用于设置Hadoop的文件系统,由URI指定 --> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <!-- 配置Hadoop的临时目录,默认在/tmp目录下,可是/tmp上面可能会被系统自动清理掉。--> <name>hadoop.tmp.dir</name> <!-- 目录若是不存在,须要手动建立 --> <value>/home/fenglibin/hadoop_tmp</value> <description>A base for other temperary directory</description> </property> </configuration> |
参数以下(部分):
参数 |
说明 |
示例 |
mapred.job.tracker |
配置JobTracker,以Host和IP的形式 |
localhost:9001 |
mapred.system.dir |
MapReduce框架在HDFS存放系统文件的路径,必须可以被server及client访问获得,默认值: ${hadoop.tmp.dir}/mapred/system |
${hadoop.tmp.dir}/mapred/system |
mapred.local.dir |
MapReduce框架在本地的临时目录,能够是多个,以逗号做分隔符,多个路径有助于分散IO的读写,默认值: ${hadoop.tmp.dir}/mapred/local |
${hadoop.tmp.dir}/mapred/local |
mapred.tasktracker.{map|reduce}.tasks.maximum |
在同一台指定的TaskTacker上面同时独立的执行的MapReduce任务的最大数量,默认值是2(2个maps及2个reduces),这个与你所在硬件环境有很大的关系,可分别设定。 |
2 |
dfs.hosts/dfs.hosts.exclude |
容许/排除的NataNodes,若是有必要,使用这些文件控制容许的DataNodes。 |
|
mapred.hosts/mapred.hosts.exclude |
容许/排除的MapReduces,若是有必要,使用这些文件控制容许的MapReduces。 |
|
mapred.queue.names |
可用于提交Job的队列,多个以逗号分隔。MapReduce系统中至少存在一个名为“default”的队列,默认值就是“default”。 Hadoop中支持的一些任务定时器,如“Capacity Scheduler”,能够同时支持多个队列,若是使用了这种定时器,那么使用的队列名称就必须在这里指定了,一旦指定了这些队列,用户在提交任务,经过在任务配置时指定“mapred.job.queue.name”属性将任务提交到指定的队列中。 这些属于这个队列的属性信息,须要有一个单独的配置文件来管理。 |
default |
mapred.acls.enabled |
这是一个布尔值,用于指定受权用于在执行队列及任务操做时,是否须要校验队列及任务的ACLs。若是为true,在执行提交及管理性的任务时会检查队列的ACL,在执行受权查看及修改任务时任务的会检查任务ACLs。队列的ACLs经过文件mapred-queue-acls.xml中的mapred.queue.queue-name.acl-name这样格式的参数进行指定,queue-name指的是特定的队列名称;任务的ACLs在mapred中会有说明。 默认值为false。 |
false |
配置示例:
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> |
参数以下(部分):
参数 |
说明 |
示例 |
mapred.queue.queue-name.acl-submit-job |
这里配置能够提交任务到默认队列(the ‘default’ queue)的用户名和组名。 注:这里的queue-name指的是一个特定的队列名称。 有两种指定的方式: 1、同时指定用户名和组名 值的格式是用户名和用户名以逗号分隔,组与组之间用逗号分隔,用户名和组之间使用空格分隔,如: user1,user2 group1,group2 二、只指定组名 在组名的前名留一下空格,如: group1,group2 三、容许全部的用户均可以提交任务,此时的值设为“*”; 四、若是设置为空格,表示不容许任何用户提交任务;
要使这些配置生效,必须设置Map/Reduce的mapred.acls.enabled的值为true。 不过无论这里的ACL的配置是怎么样,启动集群的用户以及经过经过mapreduce.cluster.administrators设置的集群管理员,均可以提交任务到队列中。 |
user1,user2 group1,group2 |
mapred.queue.queue-name.acl-administer-jobs |
列出能够对指定的队列执行任务管理的用户名和组名,如查看任务详情、修改任务优先级或者是杀掉任务。 设置的格式同上面同样。 注:任务的拥者是能够对其本身的任务进行优先级的调整或者杀掉该任务的。
与上面的配置同样,要使这些配置生效,必须设置Map/Reduce的mapred.acls.enabled的值为true。 不过无论这里的ACL的配置是怎么样,启动集群的用户以及经过经过mapreduce.cluster.administrators设置的集群管理员,均可以对该队列中的任务执行任何操做。 |
user1,user2 group1,group2 |
配置示例:
<configuration> <property> <name>mapred.queue.default.acl-submit-job</name> <value> </value> </property>
<property> <name>mapred.queue.default.acl-administer-jobs</name> <value> </value> </property> </configuration> |
这个文件的内容,可经过将$HADOOP_HOME/src/hdfs/hdfs-default.xml中的文件拷贝过来,而后再修改,若是这个文件中没有内容,那么使用的默认值就和$HADOOP_HOME/src/hdfs/hdfs-default.xml中设置的同样,若是在这里设置了就会覆盖系统中相应名称的默认值,如这里将内容的复制份数设置为1,而系统默认的复制份数为3,以下:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
hadoop namenode -format |
./bin/start-all.sh |
若是是出现以下结果,那就说明Hadoop已经成功启动了:
fenglibin@ubuntu1110:/usr/local/hadoop-1.2.1$ jps 29339 SecondaryNameNode 29661 Jps 28830 JobTracker 29208 DataNode 28503 NameNode 29514 TaskTracker |
此时咱们能够经过WEB方式查看NameNode及Jobtracker的状态了:
NameNode:http://localhost:50070/
JobTracker:http://localhost:50030/
若是只是测试map/reduce,这里只须要启动以下命令:
./bin/start-mapred.sh |
后面会提到。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!但愿你也加入到咱们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow