一、 搭建hadoop集群

可以先进行jdk和hadoop的安装,经过克隆之后,克隆的虚拟机里面也会存在jdk和hadoop(我用的是完整克隆,链接克隆应该也可以),就不需要多次安装了。

1、安装三台虚拟机并实现互通

(1)第一台虚拟机正常安装,后两台直接克隆(右键->管理->克隆)。

可能会出现虚拟机的IP地址相同(没有出现直接跳过这一步)。若出现这种情况:

先关闭虚拟机,然后右键虚拟机设置

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs


hadoop3 集群环境搭建 hadoop3.2集群安装_vim_02


再重新打开即可。

或者通过以下命令修改IP地址(每次关闭虚拟机,再开启都要改):

ifconfig ens33 192.168.253.131 netmask 255.255.255.0

(2)执行命令:vim /etc/hostname , 将三台主机名分别改为server1、server2、server3

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_03


(3)通过ifconfig查看三台虚拟机的ip地址

得到三台虚拟机的ip后,修改这三台虚拟机的对应的主机名

192.168.253.129 server1

192.168.253.131 server2

192.168.253.130 server3执行命令:vim /etc/hosts , 保存三台主机的ip和主机名,实现网络互通

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_04


(4)然后将三台虚拟机重启后生效。执行命令:ping -c 3 server3 查看几台虚拟机之间是否能ping通

hadoop3 集群环境搭建 hadoop3.2集群安装_vim_05

2、设置三台虚拟机SSH免密互登

执行命令:ssh-keygen -t dsa (注意 ssh-keygen中间没有空格)

在命令执行过程中敲击几遍回车,如果有要覆盖文件的要输入’y’或者’yes’进行覆盖,然后在/root/.ssh文件下生成两个文件id_dsa 和id_dsa.pub

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_06


执行命令:cat id_dsa.pub 查看生成的文件是否正确

hadoop3 集群环境搭建 hadoop3.2集群安装_大数据_07


三台虚拟机都执行以上操作,得到三个id_dsa.pub文件,将三个文件内容合并到一起。

然后在/root/.ssh/目录下新建一个authorized_keys文件,然后将所有的内容拷贝到该文件中

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_08

执行命令:ssh server2 实现免密互登。

exit 退出互登模式

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop3 集群环境搭建_09

3、JDK8下载安装

进入Oracle官网下载:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop_10


下载之后,通过安装虚拟机的VMvare tools工具,直接将压缩包拖到虚拟机中/home/hz/Downloads.(但经常出问题,我没有成功)另一种方式:进入WinSCP官网下载软件WinSCP。

直接拖动文件到/home/hz/Downloads即可。

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_11


hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop3 集群环境搭建_12

通过命令:cp /home/hz/downloads/jdk-8u271-linux-x64.tar.gz /usr/lib/jvm/jdk-8u271-linux-x64.tar.gz(可以先试着直接解压到/usr/lib/jvm,如果不行再用此步骤)

将压缩包放到/usr/lib/jvm下,再进行解压
tar -xzvf jdk-8u271-linux-x64.tar.gz(版本不同,名字不同)

解压成功后:

hadoop3 集群环境搭建 hadoop3.2集群安装_vim_13

然后修改环境变量:
在/etc/profile文件中新增下面内容

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_271
              
export  CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/
              
export  PATH=$JAVA_HOME/bin:$PATH

(如果报错可以试着将PATH=…,$PATH放在后面)

hadoop3 集群环境搭建 hadoop3.2集群安装_vim_14

然后使其生效:source /etc/profile

再输入:java -version (查看版本是否安装成功)

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop3 集群环境搭建_15

**注意:**三台虚拟机都要这样配置。

4、hadoop下载安装

进入hadoop官网Apache,选择二进制下载

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop3 集群环境搭建_16


通过上述jdk的方式将hadoop-3.2.0.tar.gz移动到/home/hz/downloads中

在/opt下目录新建一个名为hadoop的目录:mkdir /opt/hadoop 复制到该目录下:cp /home/hz/downloads/hadoop-3.2.0.tar.gz /opt/hadoop/Hadoop-3.2.0.tar.gz 然后进行解压:tar -xzvf hadoop-3.2.0.tar.gz 在/root/下新建几个目录:

mkdir  /root/hadoop
mkdir  /root/hadoop/tmp
mkdir  /root/hadoop/var
mkdir  /root/hadoop/dfs
mkdir  /root/hadoop/dfs/name
mkdir  /root/hadoop/dfs/data

查看配置文件:

cd /opt/hadoop/hadoop-3.2.0/etc/hadoop

hadoop3 集群环境搭建 hadoop3.2集群安装_vim_17

修改core-site.xml文件,在中加入以下配置

vim core-site.xml
<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://server1:9000</value>

   </property>

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop_18


注意:红线部分统一放server1:9000修改hadoop-env.sh文件:通过/JAVA_HOME查找该条语句,去除#使其有效,修改jdk的路径。

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_19

**修改hdfs-site.xml文件:**加入以下代码

vim hdfs-site.xml
<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>true</value>
      <description>need not permissions</description>
</property>

修改mapred-site.xml文件
在该版本中,有一个名为mapred-site.xml的文件,添加以下是:

<property>
   <name>mapred.job.tracker</name>
   <value>server1: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>

(注意:如果在执行hadoop jar运行代码时报错,有可能报的是与下面内容相关的错误,如果是就把下面这段代码加上,redhat上不需要,centos7需要)在mapred-site.xml中增加:

<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.0</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.0</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop-3.2.0</value>
</property>

**注意:**server1:49001填的是每台虚拟机自己的主机号

**修改workers文件:**将loclhost删除,
第一台虚拟机添加
server2
server3
第二台虚拟机添加:
server1
server3
第三台虚拟机类似
修改yarn-site.xml文件:

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>server1</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>2048</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>2048</value>
</property>
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>

注意:这里是第一次配置可以直接复制,后续的话可以自己进行优化

5.启动hadoop

因为server1是namenode,server2和server3都是datanode,所以只需要对server1进行初始化操作,也就是对hdfs进行格式化。
进行初始化:

cd /opt/hadoop/hadoop-3.2.0/bin
./hadoop  namenode  -format

hadoop3 集群环境搭建 hadoop3.2集群安装_大数据_20

进入启动关闭文件夹:cd /opt/hadoop/hadoop-3.2.0/sbin 第一次启动:./start-all.sh 会发生报错

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop3 集群环境搭建_21

修改一下四个文件:

在start_dfs.sh 、stop-dfs.sh两个文件开头位置添加如下配置:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

在start_yarn.sh 、stop-yarn.sh两个文件开头位置添加如下配置:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=root
YARN_NODEMANAGER_USER=root

正常启动:./start-dfs.sh

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_22

关闭:./stop-dfs.sh

Server1是我们的nameNode,IP地址是192.168.253.129:9870/,用浏览器打开这个ip地址

hadoop3 集群环境搭建 hadoop3.2集群安装_vim_23

hadoop启动后:

在server1的终端下输入jps:查看进程

hadoop3 集群环境搭建 hadoop3.2集群安装_hadoop_24


出现这四个进程说明主节点启动成功在server2的终端下输入jps:

hadoop3 集群环境搭建 hadoop3.2集群安装_hdfs_25


没有看到Nodemanager进程,并不是存在问题。

通过 ./start-all.sh 启动hadoop即可

hadoop3 集群环境搭建 hadoop3.2集群安装_大数据_26

配置hadoop环境变量:

vim /etc/profile

添加以下代码:(PATH中通过冒号进行分割)

export HADOOP_HOME=/opt/hadoop/hadoop-3.2.0
export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

输入命令:hadoop verison注意:没有-

hadoop3 集群环境搭建 hadoop3.2集群安装_大数据_27