转载请注明出处http://blog.csdn.net/l1028386804/article/details/46316051
集群的概念
计算机集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。
集群系统中的单个计算机通常称为节点,通常通过局域网连接。
集群技术的特点:
1、通过多台计算机完成同一个工作。达到更高的效率
2、两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用
集群模式安装步骤
(在伪分布模式下继续)
- 安装jdk
- 关闭防火墙
- 修改ip
- 修改hostname
- 设置ssh自动登录
- 解压hadoop
Hadoop集群搭建准备
Step1:各服务器安装JDK6
上传jdk-6u24-linux-i586.bin到/home/
#cd /home/
#./jdk-6u24-linux-i586.bin
#mvjdk-6u24-linux-i586.bin jdk
#vi /etc/profile,在文件尾部添加
export JAVA_HOME=/home/jdk
export PATH=$JAVA_HOME/bin:$PATH
保存退出
#source/etc/profile
#java -version
Step2:各服务器的网络设置
修改机器名
#hostname <机器名>
#vi /etc/sysconfig/network
HOSTNAME=<机器名> 保存退出,重启
修改/etc/hosts
修改/etc/sysconfig/network-scripts/相应的网络配置
关闭防火墙
#service iptables stop
附录:
hosts文件参考:
192.168.1.240 hadoop0
192.168.1.241 hadoop1
192.168.1.242 hadoop2
192.168.1.243 hadoop3
ifcfg-eth0文件参考:
DEVICE="eth0"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.1.240
PREFIX=24
GATEWAY=192.168.1.1
C:\WINDOWS\system32\drivers\etc\hosts
Step3:SSH免密码登录
从namenode到本身及各datanode免密码登录
在各机器上执行
#ssh-keygen -b 1024 -t rsa 一路回车
在~/.ssh/生成文件id_rsa id_rsa.pub
在namenode机器上执行:
#cd ~/.ssh/
#scp id_rsa.pub [email protected]<各datanode的IP>:/home
在各datanode机器上执行:
#cd /home/
#cat id_rsa.pub>>/root/.ssh/authorized_keys
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来无密码登录启动和停止各个DataNode上的各种守护进程的同样原理,DataNode上也能使用SSH无密码登录到NameNode。
Step4:在namenode安装Hadoop
1.用软件上传hadoop-1.0.4.tar.gz到/home
#cp hadoop-1.0.4.tar.gz /home
2.解压文件
#cd /home
#tar -zxvf hadoop-1.0.4.tar.gz
#mv hadoop-1.0.4 hadoop
3.修改/etc/profile
#vi /etc/profile
export JAVA_HOME=/home/java
export HADOOP_HOME=/home/hadoop
exportPATH=$JAVA_HOME/bin:$PATH::$HADOOP_HOME/bin
保存退出
#source /etc/profile
Step5:修改Hadoop的配置文件
1.修改conf/hadoop-env.sh
export JAVA_HOME=/home/java
export HADOOP_HEAPSIZE=1024
export HADOOP_PID_DIR=/home/hadoop/pids
保存退出
2.配置conf/core-site.xml,增加以下内容
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
3.配置conf/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/conf/excludes</value>
</property>
4.配置conf/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>hadoop0:9001/</value>
</property>
5、配置conf/masters
hadoop0
6、配置conf/slaves
hadoop1
hadoop2
hadoop3
7、复制hadoop到各datanode并修改
把hadoop0的hadoop目录、jdk目录、/etc/hosts、/etc/profile复制到hadoop1,hadoop2、hadoop3节点
#cd $HADOOP_HOME/..
#scp -r hadoop hadoop1:/home
#scp -r hadoop hadoop2:/home
#scp -r hadoop hadoop3:/home
8、启动/停止Hadoop集群
在hadoop0上
第一次启动Hadoop,必须先格式化namenode
#cd $HADOOP_HOME /bin
#hadoop namenode –format
启动Hadoop
#cd $HADOOP_HOME/bin
#./start-all.sh
如果启动过程,报错safemode相关的Exception
执行命令
# hadoop dfsadmin -safemode leave
然后再启动Hadoop
停止Hadoop
cd $HADOOP_HOME/bin
#./stop-all.sh
终端查看集群状态:
#hadoop dfsadmin -report
增加节点
1.修改新节点的/etc/hosts,增加namenode的主机名与IP
2.修改namenode的配置文件conf/slaves
添加新增节点的ip或host
3.在新节点的机器上,启动服务
#cd $HADOOP_HOME/bin
#./hadoop-daemon.sh start datanode
#./hadoop-daemon.sh start tasktracker
4.在NameNode节点执行
# hadoop dfsadmin -refreshNodes
5.均衡block
在新节点上执行(如果是增加多个节点,只需在一个新节点)
#cd $HADOOP_HOME/bin
# ./start-balancer.sh
注意事项:
1. 必须确保slave的firewall已关闭;
2. 确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中
删除节点
1、在hadoop0上修改conf/hdfs-site.xml文件
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/excludes</value>
</property>
2、确定要下架的机器
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。
3、强制重新加载配置
#hadoopdfsadmin -refreshNodes
4、关闭节点
hadoopdfsadmin -report
可以查看到现在集群上连接的节点
正在执行Decommission,会显示:
DecommissionStatus : Decommission in progress
执行完毕后,会显示:
DecommissionStatus : Decommissioned
5、再次编辑excludes文件
一旦完成了机器下架,它们就可以从excludes文件移除了
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下
节点的安全机制
准许进入dfs.hosts/mapred.hosts
必须排除dfs.hosts.exclude/mapred.hosts.exclude
安全模式
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。 NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-
dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。 dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了 元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
hadoop dfsadmin-safemode enter | leave | get |wait
基准测试
hadoop-test-*.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
hadoop-test-*.jar TestDFSIO -read -nrFiles 10 -fileSize 1000
Hadoop管理员常用命令
hadoop job –list #列出正在运行的Job
hadoop job –kill <job_id> #kill job
hadoop fsck / #检查HDFS块状态,是否损坏
hadoop fsck / -delete #检查HDFS块状态,删除损坏块
hadoop dfsadmin –report #检查HDFS状态,包括DN信息
hadoop dfsadmin –safemode enter | leave
常见分布模式安装错误
Namenode与Datanode是互相都可以ssh无密码访问
在hosts文件中127.0.0.1 不要与hadoop0一起设置