集群信息如下:
主机名 | Hadoop角色 | Hadoop jps命令结果 | Hadoop用户 | Hadoop安装目录 |
master | Master Node | NameNode DataNode JobTracker TaskTracker SecondaryNameNode | 创建相同的用户的组名:hadoop。 安装hadoop-1.0.3时使用hadoop用户,并且hadoop的文件夹归属也是hadoop:hadoop | /opt/modules/hadoop/ |
node1 | Node | DataNode TaskTracker | ||
node2 | Node | DataNode TaskTracker |
注:master即使master又是slave.
搭建步骤如下:
配置机器网络环境
修第一台 hostname 为 master
hostname master
检测
hostname
配置主机名 (hostname)
HOSTNAME=master #主机名
使用 setup 命令配置系统环境
Setup(修改本机IP,关闭防火墙)
重启网络服务
/sbin/service network restart
检查网络IP配置
/sbin/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文件修改成如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<!--hadoop namenode 服务器地址和端口,以域名形式-->
</property>
</configuration>
3、HDFS NameNode,DataNode组建配置,把hadoop目录下的conf/ hdfs-site.xml文件修改成如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<!--HDFS数据保存份数,通常是3-->
</property>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/hdfs/name</value>
<!--HDFS namenode image 文件保存地址-->
<description> </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/hdfs/data</value>
<!-- HDFS数据文件 存储路径,可以配置多个不同的分区和磁盘中,使用,号分隔 -->
<description> </description>
</property>
</configuration>
4、配置MapReduce - JobTracker TaskTracker 启动配置,把hadoop目录下的conf/ mapred-site.xml文件修改成如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
<!--JobTracker rpc主机和端口-->
</property>
</configuration>
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