修改core-site.xml内容如下:
-
version="1.0"?>
-
type="text/xsl"href="configuration.xsl"?>
-
-- Put site-specific property overrides in thisfile. -->
-
-
-
<name>fs.default.namename>
-
hdfs://localhost:9000
-
-
-
<name>hadoop.tmp.dirname>
-
/home/hadoop/program/tmp-${user.name}
-
-
修改conf/hdfs-site.xml为
-
version="1.0"?>
-
type="text/xsl"href="configuration.xsl"?>
-
-- Put site-specific property overrides in thisfile. -->
-
-
-
<name>dfs.replicationname>
-
1
-
-
修改conf/mapred-site.xml为:
-
version="1.0"?>
-
type="text/xsl"href="configuration.xsl"?>
-
-- Put site-specific property overrides in thisfile. -->
-
-
-
<name>mapred.job.trackername>
-
localhost:9001
-
-
(4)
运行Hadoop(当前用户为hadoop)
以上操作已经完成对Hadoop的配置,接下来是运行Hadoop。第一步需要进行格式化HDFS,运行脚本主要位于HADOOP_HOME/bin目录下,注意HADOOP_HOME为解压缩之后的Hadoop根目录,此处为/home/hadoop/program/hadoop-0.20.1。格式化HDFS命令为:(假设当前目录是已经在/home/hadoop/program/hadoop-0.20.1/bin/)下
-
./hadoop namenode –format
启动单节点集群:
这个操作会在本机上启动Namenode,SecondaryNameNode,Datanode,JobTracker和TaskTracker共计5个JVM进程,可以通过java自带的jps命令查看。
通过jps命令可以查看到进程如下:
-
19811 TaskTracker
-
19674 SecondaryNameNode
-
19735 JobTracker
-
19497 NameNode
-
20879 TaskTracker
-
21810 Jps
停止单节点集群:
另外可以通过以下网址查看节点的运行情况:
http://localhost:50030/ - Hadoop 管理介面
http://localhost:50060/ - Hadoop Task Tracker 状态
http://localhost:50070/ - Hadoop DFS 状态
1.3. 在多节点(分布式)环境下运行Hadoop
搭建多节点集群的思想主要是在每一台机器上分别搭建好单机环境,再将几台机器整合成一个集群。因此,在此之前,请确保每一台机器都如1.2节中所述搭建好了单机环境(最好是相同的结构)。这里说的相同结构是指hadoop安装在项目的目录下,然后多个节点使用都使用相同的用户名操作hadoop集群。比如使用用户名hadoop。这个在hadoop搭建注意事项汇总中的第一条里面有提到。我第一次部署的时候,因为第一台slave机器使用hadoop账户配置hadoop环境,而第二台master机器使用xuwei这个账户配置hadoop环境,这样在ssh的时候也会出现问题。我使用xuwei账户ssh
slave,找到的不是hadoop@slave,而是xuwei@slave。
最后在slave上新建了一个hadoop账户才解决问题。
(1)
设置/etc/hosts文件
实验中两台机器处于同一局域网中,其中一台作为master,ip地址为192.168.0.55,一台作为slave,ip地址为192.168.0.42。更新两台机器的/etc/hosts文件,使用如下命令:
添加以下内容:
-
# /etc/hosts (for master AND slave)
-
192.168.0.55 master
-
192.168.0.42 slave
(2)
设置节点之间的无密码SSH登录
这里要求master上的用户hadoop必须能够无密码登录到master和slave两台机器上。经过1.2节第(2)步的配置,已经可以在单机上进行密码SSH登录,这里只需设置由master无密码登录到slave,采用如下命令即可:在master上运行:
-
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@slave
这条命令的意思是将master上的公钥拷贝到slave上,这样下次ssh
slave的时候slave就认识master,无需在输入密码验证。
如下命令可以测试SSH连接成功与否:
(3)
修改集群配置文件
hadoop集群的架构分为两层:HDFS层和MapReduce层,在HDFS层,master将作为NameNode和DataNode,slave作为DataNode;在MapReduce层,master将作为JobTracker和TaskTracker,而slave将作为TaskTracker。值得一提的是,本次实验中master节点既作为管理节点,又担当数据节点。接下来需要修改$HADOOP_HOME/conf/下的配置文件。在master节点上修改conf/masters文件,添加如下内容:
在master节点上修改conf/slaves文件,添加如下内容(这表明master节点具有双重角色,即做master,又做slave):
如果需要添加更多slave,则可以在conf/slaves中将其他节点的名称添加进去,如下所示:
-
master
-
slave
-
anotherslave01
-
anotherslave02
在所有节点上修改conf/core-site.xml,更改fs.default.name的值为hdfs://master:9000,具体为:
-
-
<name>fs.default.namename>
-
hdfs://master:9000
-
在所有节点上修改conf/mapred-site.xml,将JobTracker的地址改为master具体为:
-
-
<name>mapred.job.trackername>
-
hdfs://master:9001
-
在所有节点上修改conf/hdfs-site.xml,将更改dfs.replication的值,这个参数决定了集群中一个文件需要保存为多少个拷贝。其默认值为3,因本次试验节点数为2,故更改为2。具体为:
-
-
<name>dfs.replicationname>
-
2
-
(4)
格式化HDFS
注意:如果之前单机环境下格式化过HDFS建议把之前的文件删除,否则可能会出现异常(HDFS目录即之前设置的${hadoop.tmp.dir}dfs目录)。格式化命令和单机情况下类似,只是需要在master节点上运行。
-
./hadoop namenode -format
(5)
启动和停止集群
在master节点上首先启动HDFS,其命令为:
其结果是在master节点上启动NameNode,SecondaryNameNode和DataNode,在所有slave节点上启动DataNode,通过jps命令可以查看master上启动的服务列表:
-
hadoop@master:~$ jps
-
14799 NameNode
-
15314 Jps
-
14880 DataNode
-
14977 SecondaryNameNode
此时slave上的进程列表如下:
-
hadoop@master:~$ jps
-
15183 Jps
-
15616 DataNode
其次,在master节点上启动MapReduce,其命令为:
这样将会在master
节点上启动JobTracker 和TaskTracker , 在所有slave
节点上启动TaskTracker,通过jps命令可以查看master上启动的服务列表:
-
hadoop@master:~$ jps
-
14799 NameNode
-
15314 Jps
-
14880 DataNode
-
14977 SecondaryNameNode
-
15686 TaskTracker
-
15596 JobTracker
此时slave上的进程列表如下:
-
hadoop@slave:~$ jps
-
15183 DataNode
-
15897 TaskTracker
-
16284 Jps
如要停止集群,则需要将上述步骤反过来运行,首先在master上运行
其次在master上运行以下命令停止HDFS:
这个过程也可通过jps命令来查看是否完成。
<!-- 正文结束 -->
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23728918/viewspace-1120112/
,如需转载,请注明出处,否则将追究法律责任。