Hadoop搭建指南
??? 1???????? Hadoop 环境搭建
下载地址为:
http://download.oracle.com/otn-pub/java/jdk/6u32-b05/jdk-6u32-linux-i586.bin
?
下载完成之后,可以通过FTP传入到Linux系统中.
?
#mkdir /bin/java
# chmod -R 775 jdk-6u32-linux-i586.bin
?
# ./jdk-6u32-linux-i586.bin
?
安装过程中,会提示您按回车键,敲回车键即可. 会在linux的当前目录下,产生一个jdk1.6.0_32文件.
jdk安装完成.
?
环境变量的配置分为几种方式,根据自己的选择配置:
?
方式一:在/etc/profile文件中配置JAVA_HOME以及PATH和CLASS_PATH
因为这样的设置将对所以用户的shell都生效,对系统安全会产生影响。
就是在这个文件的最后加上:
export JAVA_HOME=/bin/java/jdk1.6.0_32
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
?
方式二:
修改.bashrc文件来配置环境变量:
#vi .bashrc
export JAVA_HOME=/bin/java/jdk1.6.0_32
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
?
配置完成之后,使用logout命令退出,然后重新登入使其生效.
验证一下是否安装成功,使用Java -version查看一下.
?
# java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
Java HotSpot(TM) Client VM (build 20.7-b02, mixed mode, sharing)
?
hadoop5.com
/etc/init.d/hostname.sh? start 重启动
192.168.5.5?? hadoop5.com
127.0.0.1???? localhost
192.168.5.5?? brzh.com ~
export JAVA_HOME=/bin/java/jdk1.6.0_32?
???????????? ?fs.default.name
?? ???定义: Name Node的URI
?? ???描述: hdfs://hostname/
<!--??fs.default.name?- 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->
<!—hadoop.tmp.dir?是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->
?
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
?? <name> hadoop.tmp.dir</name>
?? <value>/home/tmp/hadoop</value> #设定Hadoop临时目录?
?? <description> </description>
</property>
?
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop5.com:9100</value> #设置文件系统路径
</property>
?
<property>
<name>heartbeat.recheck.interval</name>#节点间心跳检测间隔时间默10分
<value>1000</value>
</property>
</configuration>
?
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.relplication</name> ##HDFS的副本数,默认为3,如果DataNode的数量小于这个值会有问题
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>? ##是否对dfs中的文件进行权限控制
<value>false</value>
</property>
?
<property>
??? <name>dfs.http.address</name>
??? <value>hadoop5.com:50070</value> #指定namenode地址
</property>
?
<!--<property>?
?? <name>dfs.secondary.http.address</name> #指定secondary namenode
??? <value>cloud3:50090</value>?
?</property>à
? </configuration>
?
?
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
??? <name>mapred.job.tracker</name>
??? <value>hadoop5.com:9200</value> ##设置MapReduce Job运行的主机和端口
</property>
</configuration>
?
masters:指定namenode的主机名
slaves:指定datanode/tasktracker的主机名
将Hadoop目录同步到所有节点服务器
?
bin/hadoop namenode format??
bin/start-all.sh
rm -R? /tmp/hadoop-root 否则无法启动datanode
$JAVA_HOME/bin/jps
./bin/hadoop namenode? 查看namenode 启动情况
tail f /bin/hadoop/log/*.log? 查看各进程启动
?
HDFS状态:
http://hadoop5.com:50070/dfshealth.jsp
MapReduce状态:
http://hadoop5.com:50030/jobtracker.jsp
查看文件系统情况:
? bin/hadoop dfsadmin -report?
列出文件系统目录:
? bin/hadoop fs -ls hdfs://hadoop5.com:9100/
?
1、新节点ip/hosts:
??? ?? 本案例在192.168.5.5? 的slave 添加 hadoop6.com
?????? 本案例在192.168.5.6? 的master 添加 hadoop5.com
4、临时填加节点,192.168.5.6执行命令:
?
有的时候, datanode或者tasktracker crash,或者需要向集群中增加新的机器时又不能重启集群。下面方法也许对你有用。
1.把新机器的增加到conf/slaves文件中(datanode或者tasktracker crash则可跳过)
2.在新机器上进入hadoop安装目录
? $bin/hadoop-daemon.sh start datanode
? $bin/hadoop-daemon.sh start tasktracker
3.在namenode上
? $bin/hadoop balancer
?
1.清空/tmp目录 rm R /tmp/*
2.service iptables stop (看系统是否决定要执行这步)
3. ./bin/hadoop namenode format
4. ./bin/start-all.sh (需要密码登录,执行下步)
1、(namenode即master上)生成密钥
??? ssh-keygen? -t? rsa? 默认存放目录为 /root/.ssh/
??? cd /root/.ssh
??? cp /root/.ssh/id_rsa.pub? /root/.ssh/authorized_keys
2、slave 也执行 ssh-keygen? -t? rsa
3、拷贝密钥和授权
??? ?? scp -r /root/.ssh/authorized_keys? root@192.168.5.6:/root/.ssh/
??? ???然后在slave节点机上chmod 0600 ?/root/.ssh/authorized_keys
???? ?? 配置项
?? ?fs.default.name
?? ?定义: Name Node的URI
?? ?描述: hdfs://hostname/
?
?? ?mapred.job.tracker
?? ?定义: JobTracker的地址
?? ?描述: hostname:port
?
?? ?dfs.name.dir
?? ?定义: Name Node 保存元数据和事务日志的本地目录
?? ?描述: 逗号分隔的目录列表用于指定多份数据的冗余备份.
?
?? ? dfs.data.dir
?? ? 定义: Data Node 保存块文件的本地目录
?? ? 描述: 逗号分隔的目录列表指定这些目录用于保存块文件.
?
?? ? mapred.system.dir
?? ?定义: HDFS上MapReduce保存系统文件的目录.
?? ?描述:?
?
?? ?mapred.local.dir
?? ?定义: 保存MapReduce临时文件的本地目录
?? ?描述: 逗号分隔的目录列表用于指定多个目录同时做为临时数据空间
?
?? ?mapred.tasktracker.{map|reduce}.tasks.maximum
?? ?定义: TaskTracker上最多能够同时运行的map/reduce task数目.
?? ?描述: 默认map/reduce task数目各为2.
?
?? ?dfs.hosts/dfs.hosts.exclude
?? ?定义: Data Node白名单/黑名单文件
?? ?描述:?
?
?? ?mapred.hosts/mapred.hosts.exclude
?? ?定义: MapReduce白名单/黑名单文件
?? ?描述:
?
?? ?mapred.queue.names
?? ?定义: 队列名
?? ?描述: hadoop MapReduce系统默认有一个"default"的Job队列(pool).
?dfs.block.size
?定义: hdfs默认块大小
?描述: 默认是128M
?dfs.namenode.handler.count
?定义: namenode同时和datanode通信的线程数
?描述:
?mapred.reduce.parallel.copies
?定义: reducer同时从mapper上拉取的文件数
?描述:
?mapred.child.java.opts
?定义: child jvm的堆大小
?描述:
?3fs.inmemory.size.mb
?定义: reducer在合并map输出数据使用的内存空间
?描述: 默认使用200M
?io.sort.factor
?定义: 排序因子。同时合并的数据流的数量
?描述:
?io.sort.mb
?定义: 排序使用的最大内存
?描述:
?io.file.buffer.size
?定义: 读写文件的缓冲区大小
?描述:
?mapred.job.tracker.handler.count
?定义: jobtracker同时与tasktracker通信的线程数
?描述:
?tasktracker.http.threads
?定义:tasktracker开http服务的线程数。用于reduce拉取map输出数据。
?
? ??系统>系统管理>登录窗口,点“安全”选项页,选择“允许本地管理员登录”。
?