说明:本篇文章只会介绍搭建hadoop集群比较核心的部分,hdfs、yarn和mapreduce部分。
介绍:
(1)版本是hadoop3.X版本。
(2)JDK选择的是jdk1.8版本。
(3)由于是用于学习的,所以搭建的是最小的集群(3台机器)。
(4)步骤基本是固定的,特别的某些步骤可能会因为版本的区别有变化,请对应实际修改。
步骤:
(1)搭建虚拟机(另外文章有介绍)
(2)确定hostname(我的node01是作为“主节点”,还有两个“从节点”分别是node02和node03),这里看到我已经是修改好了的。如果是刚从第一台机器克隆完另外两台,没做修改的话(克隆的时候可以修改),在另外的机器敲hostname命令显示的也是node01,这里我们就要用命令进行修改。
然后reboot生效。
(3)设置网络
看到为了保证虚拟机主键和主机之间的连接应该选择的是桥接网卡的模式。
设置之后可以使用三台机器互相ping一下对方的ip(ifconfig查看ip)是否能ping通。
再ping一下www.baidu.com外网看是否额能ping通。
注意: 这里的ip如果没固定的话每次会重新获取,所以要固定每台机器的ip地址。
(4)设置/etc/hosts
目的:通过名字让机器之间相互访问,就不需要每次获取ip
1、先记住每台机器的名字和ip。
2、通过命令进行设置,每台都要设置。
3、测试一下,互相ping一下名字看是否能ping通。
(5)安全方面的设置,每台机器都要设置。
1、目的是防止后面网络方面出错。查看当前防火墙的状态。
2、关闭防火墙
3、从服务里面也关闭防火墙,防止每次开机自己启动。
4、查看执行完关闭操作后,防火前的设置
(6)关闭selinux,也是linux的一个安全模块,每台机器都要关闭。
(7)配置ssh免密登录,每台机器都要做,从设置公钥开始。
目的:如果不设置免密登录的话,机器之间互相传输文件登录啥的要有一个授权的操作和输入密码,为了简化这个操作设置一下免密登录即可。
1、首先设置公钥。
2、拷贝给node02和node03(设置node02时候就拷贝给node01和node03,以此类推。)
3、测试一下从node01直接登录到了node02。然后exit即可。
(8)安装jdk,每台都要装。
1、下载之后拷贝到虚拟机中。
2、安装jdk
3、然后设置一下环境变量,打开profile,然后在最下面加上下面的两句。
export JAVA_HOME=/usr/java/jdk1.8.0_311-amd64
export PATH=$JAVA_HOME/bin:$PATH
到此jdk就装好了,然后三台机器重启生效一下。(9)准备工作基本做完了,开始安装hadoop。每台机器都要创建目录。
1、这里我创建了一个文件夹用用于放需要的工具
2、创建目录
(10)配置hadoop
1、我是把hadoop解压在了/opt文件夹。
2、进到hadoop的etc中可以看到主要修改的四个配置文件。
3、配置core-site.mxl
打开 vi core-site.mxl,把下面的信息粘贴到最下面的两个< configuration>之间。
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
<description>namenode通讯地址</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/huser/data/hadoop/tmp</value>
<description>临时文件存储路径</description>
</property>
4、配置hdfs-site.mxl
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/huser/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/huser/data/hadoop/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
5、配置mapred-site.mxl
文件夹下是没有mapred-site.mxl文件的,所以拷贝一份mapred-site.mxl.template改为mapred-site.mxl,再配置mapred-site.mxl文件。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
6、配置yarn-site.mxl
<property>
<name>yarn.resourcemanager.address</name>
<value>node01:8040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node01:8088</value>
<description>Resourcemanager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。</description>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node01:8025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node01:8141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description >Nodemanager上运行的附属服务。需要配置成mapreduce_shuffle,才可运行MapReduce程序。</description >
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.acl.enable</name>
<value>false</value>
</property>
<property>
<name>yarn.admin.acl</name>
<value>*</value>
</property>
7、修改slaves文件
把里面内容删掉,然后加上node02和node03,因为目前配置的机器是node01。
8、修改masters文件
9、配置hadoop-env.sh
在最下面加上java_home的路径。
这是我的:export JAVA_HOME=/usr/java/jdk1.8.0_311-amd64
10、目前是在node01上做的配置,现在拷贝到node02和node03上。下面的命令是从网上搜的,命令是对的,具体的文件路径根据自己当时的情况修改。
11、格式化文件系统。回到bin目录下,只在node01上即可。
./hdfs namenode -format
(11)启动
1、启动dfs
2、启动yarn
回到hadoop的sbin目录下,里面有很多启动停止的文件。
3、命令:./start-dfs.sh
4、命令:./start-yarn.sh
(12)到这里为了方便我们后续去执行MR命令,再配置一下hadoop_home,只在node01配置即可。
1、先记住这个路径,为了方便,我们可以先cd到这个路径复制一下这个路径。我们安装的hadoop,的bin的路径,每个人路径不同,注意自己的!
2、再打开,开始配置的JAVA_HOME的文件
3、修改后的如下图,两处修改,如果不放心可以和之前的对比一下。
export JAVA_HOME=/usr/java/jdk1.8.0_311-amd64
export HADOOP_HOME=/opt/hadoop-2.8.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
4、修改后source一下
命令:source /etc/profile(13)测试,跑一下hadoop自带的样例,求pi的值。位置如下:
命令:hadoop jar ./hadoop-mapreduce-examples-2.8.0.jar pi 5 10
到此基本配置就完成了!