三个节点创建相同的用户hadoopMaster机器主要配置NameNodeJobTracker的角色,负责总管分布式数据和分解任务的执行;

3Salve机器配置DataNodeTaskTracker的角色,负责分布式数据存储以及任务的执行;

Hadoop启动以后,Namenode是通过SSH来启动和停止各个datanode上的各种守护进程的,所以就必须要配置无密码登陆。

一、关闭IPTABLESSELinux

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

[email protected]

[email protected]

[email protected]

四、安装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.配置mastersslaves主从节点

vimaster#去掉localhost,加入master机器的IP172.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

hdfs://172.17.1.7:9000

hadoop.tmp.dir

/usr/local/hadoop/tmp

fs.checkpoint.period

60

参数说明:

fs.default.name: 主节点名字和端口

hadoop.tmp.dir:存放master临时文件,需要手动创建,以后不能删除,不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

fs.checkpoint.period: snn检查nn日志的时间周期,这里是60秒,生产环境建议12小时

4.vi mapred-site.xml

mapred.job.tracker

172.17.1.2:9001

参数说明:

mapred.job.tracker:master的主机(或者IP)和端口

5.vi hdfs-site.xml

dfs.data.dir

/usr/local/hadoop/hdfs/data1,/usr/local/hadoop/hdfs/data2

dfs.name.dir

/usr/local/hadoop/name1,/usr/local/hadoop/name2

dfs.replication

3

参数说明:

dfs.data.dir:DataNode存放块数据的本地文件系统路径

dfs.name.dir:NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。

dfs.replication:数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:

此处的name1name2data1data2目录不能预先创建,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,主节点会关闭所有从节点的hadoopHadoop守护进程的日志写入到logs下。


八、测试

1.查看端口是否开启

netstat -tupln | grep 9000

netstat -tupln | grep 9001

2.访问masterNameNode)和slaveJobTracker)启动是否正常http://192.168.0.202:5007050030

3.jps查看守护进程是否运行

master显示:Job TrackerJpsSecondaryNameNod NameNode

slave显示:DataNode JpsTaskTracker

4.查看集群状态统计信息(hadoopdfsadmin -report

masterslave输入信息:

九、常用命令

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/* #查看HDFSin目录的内容

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