Hadoop学习笔记(1) - Hadoop2.7环境搭建教程

一. 集群规划

1.1 集群节点分配

注意 : 可以根据自己电脑配置调整 , 如果配置比较低就少配置几台子节点

主机名 主机IP
master 192.168.100.100
slave1 192.168.100.101
slave2 192.168.100.102
slave3 192.168.100.1003

1.2 软件版本

软件名称 软件版本
Java 1.8.0_152
Centos CentOS-7-x64-1708
Hadoop 2.7.7

1.3 各软件安装路径

软件名 安装路径
Hadoop /opt/SoftWare/Hadoop/
Java /opt/SoftWare/Java/

二. 各主机基础软件安装及操作

特别注意 : 四台主机均按照下面步骤安装基础软件工具

2.1 openssh安装,便于远程上传文件

[root@master ~]# yum -y install openssh-clients

2.2 同步时间工具

#安装ntpdate工具
[root@master ~]# yum -y install ntp ntpdate
#设置与网络时间同步
[root@master ~]# ntpdate cn.pool.ntp.org
#系统时间写入硬件时间
[root@master ~]# hwclock --systohc

2.3 文件上传(rz)下载(sz)工具

可以在Xshell工具中通过rz调出上传文件的窗口进行文件上传,也可以通过sz 文件名下载
某一个文件

[root@master ~]# yum -y install lrzsz

2.4 安装网络下载工具 wget

[root@test ~]# yum -y install wget

2.5 关闭防火墙

注意 : 我们只需要执行关闭防火墙以及禁止开机启动防火墙的命令即可!

#查看防火墙开启状态
[root@test ~]# systemctl status firewalld
#关闭防火墙
[root@test ~]# systemctl stop firewalld
#禁止开机启动防火墙
[root@test ~]# systemctl disable firewalld
#开启防火墙
[root@test ~]# systemctl start firewalld
#设置开机启动防火墙
[root@test ~]# systemctl enable firewalld
#重启防火墙
[root@test ~]# systemctl restart firewalld

三. 配置SSH免密码登录

注意 : 四台主机均按照步骤2安装基础软件工具

3.1 修改hosts文件

注意 : 添加以下内容,是四台主机都需要添加的

[root@master ~]# vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 master
192.168.100.101 slave1
192.168.100.102 slave2
192.168.100.103 slave3

3.2 配置SSH免密登录

3.2.1 创建.ssh目录

  1. 在每台机器的root目录下创建一个.ssh 文件夹
[root@master ~]# mkdir .ssh
  1. 每台机器均进入~/.ssh 目录进行操作
[root@master ~]# cd ~/.ssh

3.2.2 创建公钥和秘钥

  1. 在每台机器的root目录下创建一个.ssh 文件夹
[root@master ~]# mkdir .ssh
  1. 每台机器均进入~/.ssh 目录进行操作
[root@master ~]# cd ~/.ssh
  1. 输入以下命令,一路回车,用以产生公钥和秘钥
[root@master .ssh]# ssh-keygen -t rsa -P ''
  1. 出现以下信息说明生成成功
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6YO1h1emM9gcWvv9OT6ftHxLnjP9u8p25x1o30oq3No root@master
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| . |
| S o o |
| + O * . |
| . B.X. o.+.|
| +o=+=**%|
| .oEo*^^|
+----[SHA256]-----+

3.2.3 合并公钥文件

  1. 将每台机器上的id_rsa.pub公钥内容复制到authorized_keys文件中
[root@master .ssh]# cp id_rsa.pub authorized_keys
  1. 将所有的authorized_keys文件进行合并(最简单的方法是将其余三台slave主机的文件内容追加到master主机上)

    注意 : 这个是在三台机器上分别执行的 , 注意下面的主机名

[root@slave1 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys'
[root@slave2 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys'
[root@slave3 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys
  1. 查看master上的authorized_keys文件内容,类似如下即可
ssh-rsAAAAB3NzaC1yc2EAAAADAQABAAABAQC5iw8+LlLxo0d77uaTChOKKJqfMHzp2jgzqV2hFAneFXqqWmr
36Z4/FrMUPenmdss19bP4Up9G7PGbJu29yZDvkDwlmuqnVajYyDOsCl7PPXPWXMIlxMGUHgSXLnQQi6QnWp04vJKD37s0EbiRTd0ZYCSQefzJcZ8jbQ7bLYt6jtil7FfUupTdHTeexKKd8Mq3K7YFZHumKvhzs6wWiM+n41jANS083ss3O38YmAdO2cU0w1BhLVvJhdzd6fNG3RXVCXI2v0XxCUHiqI9Oewl2qPOfKzeyy09bJxo371Ezjmt8GMrkA/Ecepkvx1392qwNzC9bSPLfbnPWVo2gIxe4mMaFqCFJ root@master

40ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQC3CkB3Jejavt+yFphsbciktWciJmbcUBOv3ZLPVLW18ZxXGZK
41vG50EPXo/4By7P6IRW0wCa5YuckQEW+q6kmSatxqJ8e/K9a1mAk13N4f7V7M71Nn8IkujlF3gHYjKrmnEWpGJCy425YBURzywIQTRArlIac1xj2SeM6q+gTMV9WrAKJupIRHli+W0kHVaYHNdKl7KMUT4KVrSl+h4wFwAd7Tcyj7JIbU43cCCL6o/v/LqGFwpcJfbfUsuKJJho+tImh41j7mSXR8kRbTSZkcq5K+iANrANwOHZ58tV5KXmMQjuVq7aJ985C1446hHssB6zq/zjAxpxAyQIeE8Incc8U8ix root@slave1

45ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQC//uaMbzbkYqxdgZJSdq+gdQYldzMQ7D3SxsUaNO5oVnVOszw
46+mbNnmL8vp1EUUehabQHPCAvCmLKUPXzfcxlyJEF/pnY77u4ySwsRVEpHvsDZbrclgCOrS6hW00sSx303KHLOgX47T70LfrmnohfUhvTxajzLXT+C8f5ZfTZ8meKD73HKl16jRwZQ8YhW9GUyuCkgQTGtKtTKPsRUd9LpAc/7/u8xvvv48NvTYPxgyTJcUMzGSOHh8J3upI54ykY0FgBkjs1fCUaDalxAgsHw9B1iyx706WbcT6ymiQVMKGnnnM6k2KPvUvfD490swVfUSG+4ZsYSRHRTgWuiBbHoIr7DVd root@slave2

50ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQDDTzTTdGRTd1zts3m7uKobcgRom4lVyF9EdNOdbBWMucYjbCs
51BgP1ideDDQed2TyBj3Szz3Yx6h1L4McGmATY/D9qRLml26VW/x0Tod8JYkqOQpQL9knLW2cwITnhLzq5VDugOix5206r/uweP3Zed9CO7ld3jUxJJNZCYpsNz+eUKq9SWM5+ehUu9pfZZu9zUk7Q01js3uCHzu1AhsajgNzgB4+YLLcc53dHBfxGg4ix5wuaF82PlEEh70hTdfRkq8pqPMZ+FIQtTgfD5XllKTcnPItUY23hc7Umx4I3ujOd810vzffWYK07c54Otv1r7LEcYtYqbZ6zIvII+M775iRkzQX root@slave3

3.2.4 分发 authorized_keys 文件

  1. 将master上的authorized_keys文件分发到其他主机上
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave1:~/.ssh/
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave2:~/.ssh/
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave3:~/.ssh/

3.2.5 测试免密登录

  1. 每台机器之间进行ssh免密码登录操作,包括自己与自己
[root@master ~]# ssh master
[root@master ~]# ssh slave1
[root@slave1 ~]# ssh master
[root@master ~]# ssh slave2
[root@slave2 ~]# ssh master
[root@master ~]# ssh slave3
[root@slave3 ~]# ssh master
[root@master ~]# ssh slave1
[root@slave1 ~]# ssh slave1
[root@slave1 ~]# ssh slave2
[root@slave2 ~]# ssh slave1
[root@slave1 ~]# ssh slave3
[root@slave3 ~]# ssh slave1
[root@slave1 ~]# ssh slave2
[root@slave2 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave3

四. 安装配置Java环境并测试

注意 : 所有主机都需要配置Java环境

4.1 下载jdk

下载地址 :https://repo.huaweicloud.com/java/jdk/8u152-b16/jdk-8u152-linux-x64.tar.gz

4.2 卸载其他jdk

如果centos中已经安装的有jdk,则需要先卸载当前jdk,重新安装新的jdk

4.2.1 查询当前所有安装的jdk版本

[root@master ~]# rpm -qa|grep jdk

如果什么都没有展示说明没有已安装的jdk,则无需卸载,如果出现以下jdk,则卸载之

copy-jdk-configs-2.2-3.el7.noarch
java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

4.2.2 卸载jdk

  1. 使用下面的方法卸载即可 [参考]

    [root@master ~]# yum -y remove copy-jdk-configs-2.2-3.el7.noarch
    [root@master ~]# yum -y remove java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    [root@master ~]# yum -y remove java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    
  2. 再次查询当前所有安装的jdk版本

    [root@master ~]# rpm -qa|grep jdk
    

4.3 开始安装jdk

4.3.1 在master主节点上创建指定目录

[root@master ~]# mkdir -p /opt/SoftWare/Java
[root@master ~]# mkdir -p /opt/SoftWare/Hadoop

4.3.2 解压

  1. 进入到Java目录
[root@master ~]# cd /opt/SoftWare/Java
  1. 使用rz命令从windows主机上传jdk压缩包到master节点
[root@master Java]# rz
  1. 解压到当前目录
[root@master Java]# tar -zxvf jdk-8u152-linux-x64.tar.gz

4.3.3 配置环境变量

  1. 打开 profile文件
[root@master Java]# vi /etc/profile
  1. 在文件的末尾追加以下内容
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152
export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  1. 使刚才的设置生效
[root@master Java]# source /etc/profile
  1. 检测是否配置成功
[root@master Java]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

五. 安装配置Hadoop并配置

5.1 下载Hadoop安装包

下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.ta

5.2 上传至master节点

  1. 上传Hadoop安装包
[root@master ~]# cd /opt/SoftWare/Hadoop
[root@master Hadoop]# rz
  1. 解压
[root@master Hadoop]# tar -zxvf hadoop-2.7.7.tar.gz

5.3 创建目录

5.3.1 进入解压后的Hadoop根目录

[root@master Hadoop]# cd hadoop-2.7.7

5.3.2 创建以下目录

# 创建hadoop 缓存文件目录
[root@master hadoop-2.7.7]# mkdir tmp
# 创建hadoop 日志文件目录
[root@master hadoop-2.7.7]# mkdir logs
# 创建hadoop NameNode数据目录
[root@master hadoop-2.7.7]# mkdir -p hdfs/name
# 创建hadoop DataNode数据目录
[root@master hadoop-2.7.7]# mkdir -p hdfs/data

5.4 修改配置

5.4.1 修改hadoop-env.sh文件

[root@master hadoop-2.7.7]# vi etc/hadoop/hadoop-env.sh
#修改JAVA_HOME为以下内容,否则容易出现Hadoop无法启动问题
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

5.4.2 修改yarn-env.sh文件

[root@master hadoop-2.7.7]# vi etc/hadoop/yarn-env.sh
#修改JAVA_HOME为以下内容
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

5.4.3 编辑slaves文件

#该文件用于记录本集群有哪些数据节点
[root@master hadoop-2.7.7]# vi etc/hadoop/slaves
#删除该文件中原来的内容,添加以下内容
slave1
slave2
slave3

5.4.4 修改core-site.xml文件

  1. 打开 core-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/core-site.xml
  1. 将下面的内容添加到 core-site.xml 文件
<!--在<configuration></configuration>中间添加一下内容-->
<property>
<name>fs.defaultFS</name><!--定义Hadoop Master的URI和端口-->
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name><!--hadoop的临时存储目录-->
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name><!--用作序列化文件处理时读写buffer的大小-->
<value>131702</value>
</property>

5.4.5 修改hdfs-site.xml文件

  1. 打开 hdfs-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/hdfs-site.xml
  1. 将下面的内容添加到 hdfs-site.xml

在中间添加一下内容

<!--在<configuration></configuration>中间添加一下内容-->
<property><!--namenode节点数据存储目录-->
<name>dfs.namenode.name.dir</name>
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name</value>
</property>
<property><!--datanode数据存储目录-->
<name>dfs.datanode.data.dir</name>
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/data</value>
</property>
<property><!--指定DataNode存储block的副本数量,不大于DataNode的个数就行,默认为3-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property><!--指定master的http协议访问地址-->
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property><!--指定master的https协议访问地址-->
<name>dfs.namenode.secondary.https-address</name>
<value>192.168.10.250:50091</value>
</property>
<property><!--必须设置为true,否则就不能通过web访问hdfs上的文件信息-->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

5.4.6 修改yarn-site.xml文件

  1. 打开 yarn-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/yarn-site.xml
  1. 将下面的内容添加到 yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>

5.4.7 修改mapred-site.xml文件

  1. 这个文件并不存在,先复制再打开
#使用cp命令复制一份出来,不要自己创建
[root@master hadoop-2.7.7]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[root@master hadoop-2.7.7]# vi etc/hadoop/mapred-site.xml
  1. 添加下面的内容
<property><!--使用yarn运行mapreduce程序-->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property><!--MapReduce JobHistory Server地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property><!--MapReduce JobHistory Server Web界面地址-->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>

5.5 分发Hadoop文件

  1. 将master节点上的Hadoop目录远程拷贝到其他slave节点
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave1:/opt/SoftWare/
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave2:/opt/SoftWare/
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave3:/opt/SoftWare/

5.6 修改环境变量

  1. 编辑 /etc/profile 文件
[root@master hadoop-2.7.7]# vi /etc/profile
  1. 添加以下内容
#添加以下内容
export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.7
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  1. 使设置生效
[root@master hadoop-2.7.7]# source /etc/profile

5.7 格式化Hadoop

注意 : 这个只需要在 master节点上执行即可, 其他的不需要执行!

不要重复格式化 ! 如果需要重复格式化, 先把之前创建的hdsf目录下的name 和data 目录删除,然后再重新创建!

  1. 执行下面的命令
[root@master hadoop-2.7.7]# bin/hdfs namenode -format
  1. 在最后出现以下内容说明格式化成功
18/03/01 10:07:59 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1057357071-192.168.100.100-1519870079201
18/03/01 10:07:59 INFO common.Storage: Storage directory /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name has been successfully formatted.
18/03/01 10:07:59 INFO namenode.FSImageFormatProtobuf: Saving image file /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
18/03/01 10:07:59 INFO namenode.FSImageFormatProtobuf: Image file /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
18/03/01 10:07:59 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/03/01 10:07:59 INFO util.ExitUtil: Exiting with status 0
18/03/01 10:07:59 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.100.100
************************************************************/

注意上面的第二行最后的successfully formatted

5.8 启动Hadoop集群

5.8.1 启动HDFS

  1. 按照新版要求,不建议直接使用start-all.sh命令
[root@master hadoop-2.7.7]# sbin/start-dfs.sh
  1. 然后会在控制台打印以下信息
Starting namenodes on [master]
master: starting namenode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootnamenode-master.out
slave1: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave1.out
slave2: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave2.out
slave3: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave3.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadooproot-secondarynamenode-master.out

5.8.2 启动Yarn

  1. 执行 start-yarn.sh
[root@master hadoop-2.7.7]# sbin/start-yarn.sh
  1. 然后会在控制台打印以下信息
starting yarn daemons
starting resourcemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootresourcemanager-master.out
slave2: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave2.out
slave3: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave3.out
slave1: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave1.out

5.9 检测集群是否搭建成功

5.9.1 在 Master上执行

[root@master hadoop-2.7.7]# jps
44658 ResourceManager
44509 SecondaryNameNode
44318 NameNode
44958 Jps

5.9.2 在 slave节点上执行

[root@slave1 ~]# jps
2262 DataNode
2360 NodeManager
2461 Jps

5.9.3 使用WEB界面访问

  1. 在浏览器地址栏中输入http://192.168.100.100:50070 即可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章