LinuxJDKmasterLinuxJDKnode1LinuxJDKnode2Hadoop试验集群部署结构任务层节点管理层节点NameNodeJobTrackerSecondaryNameNodeDataNodeTaskTrackerDataNodeTaskTrackerDataNodeTaskTrackerclient serverHadoop Client
集群信息如下:
主机名
Hadoop 角色 Hadoop jps 命令结果
Hadoop 用户
Hadoop 安装目录
/opt/modules/hadoop/
master
Master
Node
node1
Node
node2
Node
创建相同的用户的
组名:hadoop。
安 装 hadoop-1.0.3
时 使 用 hadoop 用
户,并且 hadoop 的
文 件 夹 归 属 也 是
hadoop:hadoop
NameNode
DataNode
JobTracker
TaskTracker
SecondaryNameNode
DataNode
TaskTracker
DataNode
TaskTracker
注:master 即使 master 又是 slave.
搭建步骤如下:
配置机器网络环境
修第一台 hostname 为 master
hostname master
检测
hostname
配置主机名 (hostname)
HOSTNAME=master #主机名
使用 setup 命令配置系统环境
Hadoop 组件依赖关系HDFSMapReduceLinuxJVM网络NameNodeSecondaryNamenodeDataNodeJobTrackerTaskTrackerIP配置VM 网络结构(net,桥接?)本地DNS配置(hosts)HostNameSSH 无密钥登陆通道Hadoop Client (hadoop fs + hadoop jar)用户名和群组目录结构和权限授时服务环境变量防火墙
Setup(修改本机 IP,关闭防火墙)
重启网络服务
/sbin/service network restart
检查网络 IP 配置
vi /etc/ifconfig
配置集群 hosts 列表
vi /etc/hosts
安装 JAVA JDK 系统软件(在 root 下运行)
./jdk-6u21-linux-i586-rpm.bin
#配置环境变量
vi /etc/profile.d/java.sh
#手动立即生效
source /etc/profile
安装完之后不要忘了将所有者设置为 hadoop。
使用命令 chown -R hadoop:hadoop
#测试
jps
创建用户组
groupadd hadoop 添加一个组
useradd hadoop -g hadoop 添加用户
创建 hadoop 代码目录结构
mkdir -p /opt/modules/hadoop/
创建 hadoop 数据目录结构
mkdir -p /data/hadoop/
修改 目录结构权限为为 hadoop
chown -R hadoop:hadoop /opt/modules/hadoop/
chown -R hadoop:hadoop /data/hadoop/
hadoop 的安装
cp hadoop-1.0.3.tar.gz /opt/modules/hadoop/
cd /opt/modules/hadoop/
tar -xzvf hadoop-1.0.3.tar.gz
chown -R hadoop:hadoop /opt/modules/hadoop/ 将其所有者改为 hadoop
运行 hadoop 看是否成功
修改 hadoop 的配置文件
首先切换到 hadoop 用户,su hadoop
1、修改 hadoop 目录下的 conf/hadoop-env.sh 文件
加入 java 的安装路径 export JAVA_HOME=/opt/java/jdk
export HADOOP_HEAPSIZE=32
2、把 hadoop 目录下的 conf/core-site.xml 文件修改成如下:
fs.default.name
hdfs://master:9000
3、HDFS NameNode,DataNode 组建配置,把 hadoop 目录下的 conf/ hdfs-site.xml 文件修改成
如下:
dfs.replication
3
dfs.name.dir
/data/hadoop/hdfs/name
dfs.data.dir
/data/hadoop/hdfs/data
4 、 配 置 MapReduce - JobTracker TaskTracker 启 动 配 置 , 把 hadoop 目 录 下 的 conf/
mapred-site.xml 文件修改成如下:
mapred.job.tracker
master:9001
5、把 hadoop 目录下的 conf/ masters 文件修改成如下:
master
6、把 hadoop 目录下的 conf/ slaves 文件修改成如下:
master
node1
node2
SSH 设置无密码验证
#切换到 Hadoop 用户下
su hadoop
cd /home/hadoop/
#生成公钥和私钥
ssh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa
#查看密钥内容
cd /home/hadoop/.ssh
cat id_rsa.pub
#复制 id_rsa.pub 公钥到 authorized_keys 目录
cat id_rsa.pub > authorized_keys
#修改 master 密钥权限,非常容易错误的地方。
chmod go-rwx /home/hadoop/.ssh/authorized_keys
#把 master 机器上的 authorized_keys 文件 copy 到 node1 节点上。
scp /home/hadoop/.ssh/authorized_keys node1:/home/hadoop/.ssh/
#输入 hadoop 密码
#修改 node1 、node2 密钥权限
chmod go-rwx /home/hadoop/.ssh/authorized_keys
运行 hadoop
使用 Hadoop 用户,切换到 hadoop/bin 目录下
格式化分布式文件系统./hadoop namenode -format
执行命令./start-all.sh 启动 hadoop
在 master 上执行 jps 命令查看运行的进程如下:
[hadoop@master hadoop]$ jps
3200 SecondaryNameNode
3271 JobTracker
3370 TaskTracker
3002 NameNode
3106 DataNode
5687 Jps
在 node1 和 node2 上执行 jps 结果如下:
[hadoop@node1 ~]$ jps
1477 DataNode
3337 Jps
1547 TaskTracker
访问 http://master:50070 可以查看分布式文件系统的状态
运行单词统计程序
WordCount 是 hadoop 自带的实例,统计一批文本文件中各单词出现的资料,输出
到指定的 output 目录中,输出目录如果已经存在会报错。
hadoop jar hadoop-0.20.2-examples.jar wordcount input output