三个节点创建相同的用户hadoop,Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;
3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行;
在Hadoop启动以后,Namenode是通过SSH来启动和停止各个datanode上的各种守护进程的,所以就必须要配置无密码登陆。
一、关闭IPTABLES和SELinux:
service iptables stop
chkconfig iptables off
vi/etc/selinux/config
SELINUX=disabled#修改为disabled
二、配置每台java环境
tar zxvf jdk-7u17-linux-x64.tar.gz
mv jdk-7u17-linux-x64 /usr/local/jdk
添加环境变量:
vi /etc/profile
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HADOOP_HOME/bin
export JAVA_HOME CLASSPATH PATH
source /etc/profile
java --version #显示版本则配置成功
三、创建用户和配置密钥对认证
A.三个节点都要创建hadoop用户,而且uid一样并设置密码
useradd -u 600 hadoop
passwd 密码
B.登陆到master创建密钥对
su- hadoop
ssh-keygen -t rsa #一直回车
ls/home/hadoop/.ssh
id_rsa id_rsa.pub #生成一对密钥
C.登录master将公钥上传到两台slave并重命名为authorized.keys
ssh-copy-id-i [email protected]
ssh-copy-id-i [email protected]
ssh-copy-id-i [email protected]
ssh-copy-id-i [email protected]
D.验证登陆
ssh [email protected] #不用输入密码直接登陆两台slave上
四、安装Hadoop并将配置完整复制到slave机器上
1.下载:http://www.apache.org/dist/hadoop/core/hadoop-1.2.0/
tarzxvf hadoop-1.2.0.tar.gz
mvhadoop-1.2.0 /usr/local/hadoop
2.更改
vi/etc/profile
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME
source /etc/profile #生效变量
chown-R hadoop.hadoop /usr/local/hadoop #设置hadoop所属用户
五、修改集群配置(hadoop/conf)
1.配置masters和slaves主从节点
vimaster#去掉localhost,加入master机器的IP:172.17.1.1
172.17.1.1
vislaves#去掉localhost,加入slave所有机器的IP
172.17.1.2
172.17.1.3
172.17.1.4
2.vi hadoop-env.sh
export JAVA_HOME=/usr/local/jdk #去掉注释,修改jdk路径
3.vi core-site.xml
参数说明:
fs.default.name: 主节点名字和端口
hadoop.tmp.dir:存放master临时文件,需要手动创建,以后不能删除,不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
fs.checkpoint.period: snn检查nn日志的时间周期,这里是60秒,生产环境建议12小时
4.vi mapred-site.xml
参数说明:
mapred.job.tracker:master的主机(或者IP)和端口
5.vi hdfs-site.xml
参数说明:
dfs.data.dir:DataNode存放块数据的本地文件系统路径
dfs.name.dir:NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.replication:数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:
此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
六、配置结束,使用scp命令把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
scp -r /usr/local/hadoop/root@slave1/2.com:/usr/local/hadoop
七、启动hadoop
1.先格式化一个新的分布式文件系统(hadoopnamenode -format)
2.启动hadoop节点(start-all.sh)
执行完后可以到master机器上到/usr/local/hadoop/hdfs/data1、/usr/local/hadoop/hdfs/data2、/usr/local/hadoop/name1和/usr/local/hadoop/name2四个目录。在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
3.关闭hadoop节点
stop-all.sh
主节点关闭hadoop,主节点会关闭所有从节点的hadoop。Hadoop守护进程的日志写入到logs下。
八、测试
1.查看端口是否开启
netstat -tupln | grep 9000
netstat -tupln | grep 9001
2.访问master(NameNode)和slave(JobTracker)启动是否正常http://192.168.0.202:50070和50030
3.jps查看守护进程是否运行
master显示:Job TrackerJpsSecondaryNameNod NameNode
slave显示:DataNode JpsTaskTracker
4.查看集群状态统计信息(hadoopdfsadmin -report)
master和slave输入信息:
九、常用命令
hadoop dfs -ls #列出HDFS下文件
hadoop dfs -ls in #列出HDFS下某个文档中的文件
hadoop dfs -put test.txt test #上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功
hadoop dfs -get in getin #从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录
hadoop dfs -rmr out #删除HDFS上的out目录
hadoop dfs -cat in/* #查看HDFS上in目录的内容
hadoop dfsadmin -safemode leave #退出安全模式
hadoop dfsadmin -safemode enter #进入安全模式
九、添加一个新的节点
1.在新加的节点上安装hadoop,
2.修改hadoop/conf/master文件,加入 NameNode主机名,
3.在NameNode节点上修改hadoop/conf/slaves文件,加入新加节点主机名,
4.建立到新加节点无密码的SSH连接
5.运行启动命令:start-all.sh
6.http://master.node:50070,查看新增加的DataNode