第一步,准备3台机器或虚拟机,分别作为hadoop安装集群的master和2个slave。
3台机器安装好JDK,并配置好JAVA_HOME(请参考《Centos7安装Oracle JDK》)。然后在3台机器之间建立信任关系(请参考《在两台Centos服务器之间建立信任关系》)。
然后,在3台机器上分别执行hostname aeolus-vm0,hostname aeolus-vm1,hostname aeolus-vm2命令,为3台机器命名。具体的名称大家可以根据习惯配置。
然后在3台机器上执行vi /etc/hosts配置hosts,可以互相通过hostname进行访问。其中的ip地址根据实际情况配置。
192.168.8.60 aeolus-vm0
192.168.8.59 aeolus-vm1
192.168.8.58 aeolus-vm2
这样就完成了初步的服务器基础配置工作。下面就可以安装hadoop了。
第二步,登录Apache Hadoop网站,下载Hadoop2.8的安装包。这里下载压缩包即可。
然后将安装包上传到3台机器。解压缩后,将解压出来的hadoop目录拷贝到/opt/hadoop目录下。即/opt/hadoop作为hadoop的安装目录。
第三步,配置hadoop。
编辑/opt/hadoop/etc/hadoop/core-site.xml,在<configuration>节点中增加如下内容:
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://aeolus-vm0:9000</value>
</property>
编辑/opt/hadoop/etc/hadoop/hadoop-env.sh,将export JAVA_HOME=${JAVA_HOME}中的${JAVA_HOME}改成jdk安装路径。即使安装JAVA时已经配置过JAVA_HOME系统变量,该步骤也是必须的。
编辑/opt/hadoop/etc/hadoop/hdfs-site.xml,在<configuration>节点中增加如下内容:
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/dfs/name</value>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/dfs/data</value>
<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
注意:dfs.permissions如果配置成true,则对dfs上的文件进行读写时,就需要检查权限。会更安全。如果该参数不配,则默认为校验权限。
执行cp /opt/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/etc/hadoop/mapred-site.xml,将系统提供的mapred-site.xml.template拷贝生成mapred-site.xml,然后编辑该xml,在<configuration>节点中增加如下内容。
<property>
<name>mapred.job.tracker</name>
<value>aeolus-vm0:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
编辑/opt/hadoop/etc/hadoop/slaves文件,删除缺省的localhost,将两个slave机器的hostname添加到其中。
aeolus-vm1
aeolus-vm2
编辑/opt/hadoop/etc/hadoop/yarn-site.xml文件,在<configuration>节点上增加如下内容。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>aeolus-vm0</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
<discription>每个节点可用内存,单位MB,默认8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
说明:yarn.nodemanager.vmem-check-enabled这个的意思是忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉。
第四步,启动hadoop
根据上面的配置,我们将aeolus-vm0配置成了master,即namenode。那么只需要在该节点启动即可。
进入/opt/hadoop/bin,执行./hadoop namenode -format命令初始化该节点。
执行过程不报错,正常状态如下:
此时,/root/hadoop/dfs/name/current/目录下会多出如下几个文件:
在3台机器上重复第三步的所有操作,执行完成全部3台机器的初始化后,即可在namenode上启动hadoop。
在/opt/hadoop/sbin下,执行./start-all.sh,启动hadoop。如果启动过程和下图一致,则表示正常。
此时,找另外一台机器,输入namenode的地址和50070端口,如果出现下面的界面,则表示启动正常。
输入namenode的ip+8088端口,会出现claster管理页面,如下图。
到此,安装结束。
最后,如果要访问slave的8042端口,查看slave机器状态,则需要执行systemctl stop firewalld.service命令,关闭slave机器上的防火墙。