1. 安装
这里假定我们运行Hadoop集群的三台机器名分别为fanbinx1,fanbinx2,fanbinx3。其中fanbinx1作为master节点,fanbinx2和fanbinx3作为slave节点。
另外我们Hadoop的2.5.1的安装包安装到各个机器的/opt/hadoop目录下,为了说明方便我们这里使用$HADOOP_HOME来代替/opt/hadoop目录
并在此目录下创建下面三个目录
mkdir -p $HADOOP_HOME/dfs/name
mkdir -p $HADOOP_HOME/dfs/data
mkdir -p $HADOOP_HOME/temp
2. 配置
这里一共需要修改hadoop的下面几个配置文件和脚本文件
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
$HADOOP_HOME/etc/hadoop/yarn-env.sh
$HADOOP_HOME/etc/hadoop/core-site.xml
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
$HADOOP_HOME/etc/hadoop/mapred-site.xml
$HADOOP_HOME/etc/hadoop/yarn-site.xml
$HADOOP_HOME/etc/hadoop/slaves
2.1 $HADOOP_HOME/etc/hadoop/hadoop-env.sh指定JAVA_HOME环境变量
export JAVA_HOME=/opt/jdk7
2.2 $HADOOP_HOME/etc/hadoop/yarn-env.sh指定JAVA_HOME环境变量
export JAVA_HOME=/opt/jdk7
2.3 $HADOOP_HOME/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://fanbinx1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/temp</value>
</property>
</configuration>
2.4 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/data</value>
</property>
</configuration>
2.5 $HADOOP_HOME/etc/hadoop/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.6 $HADOOP_HOME/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>fanbinx1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>fanbinx1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>fanbinx1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>fanbinx1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>fanbinx1:8088</value>
</property>
</configuration>
2.7 $HADOOP_HOME/etc/hadoop/slaves这个文件夹用来定义slave节点
fanbinx2
fanbinx3
2.8 最后需要将这些配置文件复制到另外两个slave节点上。
3. 设置Linux上可以ssh用户可以免密码登录
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
4. 启动Hadoop集群
4.1 首先格式化namenode
$ bin/hdfs namenode -format
4.2 启动hdfs
在master机器上运行下面命令
$ sbin/start-dfs.sh
在master机器上运行”ps -ef | grep hadoop”可以查看到NameNode和SecondaryNameNode两个hadoop进程
在slave机器上运行”ps -ef | grep hadoop”可以查看到DataNode一个hadoop进程
4.3 启动yarn
在master机器上运行下面命令
$ sbin/start-yarn.sh
在master机器上运行”ps -ef | grep hadoop”可以查看到NameNode,SecondaryNameNode和ResourceManager三个hadoop进程
在slave机器上运行”ps -ef | grep hadoop”可以查看到DataNode和NodeManager两个hadoop进程
4.4 验证
在启动了hdfs和yarn之后,可以通过项目两个url来查看状态
查看HDFS:http://fanbin1:50070/
查看RM: http://fanbin1:8088/cluster/
也可以使用下面的命令行来查看集群状态
$ bin/hdfs dfsadmin -report
4.5 这里也可以使他”sbin/start-all.sh”和”sbin/stop-all.sh”来代替启动/停止hdfs和yarn两个服务。
5. 运行示例程序
首先提交作业
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
$ bin/hdfs dfs -put etc/hadoop input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'
查看结果
$ bin/hdfs dfs -get output output
$ cat output/*