搭建三个节点的Hadoop环境。
理论上讲,Namenode 和JobTracker都是master节点,分布在不同的机器上。我们这里把两个java的进程放在同一台机器上。然后搭建两个slave机器,每个机器上都作为Datanode和TaskTracker.
1. 准备:
都需要安装Linux的发行版本,一台机器作为master节点,两外两个机器作为slave节点。
修改3台机器的/etc/hosts,让彼此的主机名称和ip都能顺利解析。
如果系统中安装有交换机,在一个子网下已经可以ping通,就不需要配置。我的集群就是这样的情况。配置完后用ping命令检查是否可以通过主机名访问各机器。
2. 安装java环境:
三台机器统一安装java环境,配置环境变量。我的java安装在/usr/java/下,环境变量如下:
JAVA_HOME=/usr/java/jdk1.6.0_34/
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH
export CLASSPATH
3.新建一个用户组和用户,专门用来做hadoop测试,命令根据linux的版本不同而定,下面的代码是ubuntu
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
sudo usermod -aG admin hadoop
4.下载hadoop-1.0.4,这个是个稳定的版本。
将其解压在/home/hadoop下,这里可以解压在别的地方,视你的情况而定。但是放在别的地方可能有访问权限的问题
配置hadoop环境变量:
HADOOP_HOME=/home/hadoop/hadoop-1.0.4
HADOOP_CONF_DIR=$HADOOP_HOME/conf
HADOOP_LOG_DIR=/home/hadoop/hadoop-1.0.4/logs
PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME
export HADOOP_CONF_DIR
export HADOOP_LOG_DIR
export PATH
以下内容现在master节点上面做
5.安装ssh,并生成公钥和私钥,运行:
ssh-keygen -t rsa
在/home/hadoop/.ssh下生成两个文件, id_rsa id_rsa.pub,执行以下命令将公钥放在authorized_keys中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
以上配置完成后,执行一下ssh localhsot,确认你的每台机器都可以使用ssh
如果不行,自行上网查找解决方法,我的机器在这一步中执行不下去,原因多种多样。
有一个原因可能是因为authorized_keys 的权限问题,需要权限是600才可以。但是不局限这个问题
6. 将master服务器上的authorized_keys的内容加到slave两台机器的authorized_keys文件中。让master也可以不需要密码访问2台slave服务器。
测试ssh 机器名,看是否可以无密码登录slave机器
7. 添加$HADOOP_HOME/conf/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_34/
8. 编辑$HADOOP_HOME/conf/core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-1.0.4/tmp</value>
<description>.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://机器名:54310</value>
<description> </description>
</property>
9. 编辑$HADOOP_HOME/conf/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master机器名:54311</value>
<description>. </description>
</property>
10. 编辑$HADOOP_HOME/conf/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
<description>. </description>
</property>
11. 编辑$HADOOP_HOME/conf/masters
编辑$HADOOP_HOME/conf/slaves
12. 拷贝masternode上$HADOOP_HOME文件拷贝到各个节点上
13. 在所有机器上创建/home/hduser/hadoop/tmp
14. 配置结束,启动hadoop
先格式化masternode
bin/hadoop namenode -format
bin/start-all.sh
执行启动Hadoop进程后, 在master服务器会启动3个java进程,分别的NameNode,SecondNameNode,JobTracker,在LOG目录下会产生2个文件,分别对应NameNode的运行日志和JobTracker的运行日志, 在slave服务器会启动2个java进程,分别为DataNode,TaskTracker,,在LOG目录下会产生2个文件,分别对应 DataNode的运行日志和TaskTracker的运行日志,可以通过查看日志分析hadoop的启动是否正确。
通过浏览器可以查看hadoop状态。