目录

一、搭建虚拟机

二、配置

三、Hadoop集群搭建

四、集群体验


http://链接: https://pan.baidu.com/s/14icx_oFkSvFiT5Asxlcw7A?pwd=j6ed 提取码: j6ed

一、搭建虚拟机

1、这里以Centos7为例,准备好Centos7的光驱,和hadoop和jdk的压缩包,hadoop和jdk的压缩包已经放在百度网盘了,有需要可自行提取。

2、创建三台虚拟机,这里我们创建第一台虚拟机hadoop01.bgd01,接下来以图片为例。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs

hadoop一键集群部署 超详细的hadoop集群部署_学习_02

 

hadoop一键集群部署 超详细的hadoop集群部署_大数据_03

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_04

这里将虚拟机命名为hadoop01.bgd01,存放目录可以自行选择。

hadoop一键集群部署 超详细的hadoop集群部署_大数据_05

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_06

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_07

这里选择桥接

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_08

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_09

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_10

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_11

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_12

到这一步,已经初步完成了虚拟机的创建,接下来是配置镜像。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_13

这里选择事先放好的Centos7镜像存放的目录,然后可以开始启动虚拟机了。

hadoop一键集群部署 超详细的hadoop集群部署_学习_14

启动虚拟机,选择第一个,按回车键确认。

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_15

 

hadoop一键集群部署 超详细的hadoop集群部署_学习_16

点击键盘,这里选择英语(美国)并将其设为第一位。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_17

点击软件选择,选择基本网页服务器,然后选择MariaDB数据库客户端、Web服务器程序引擎、系统管理工具这三个,然后保存。

hadoop一键集群部署 超详细的hadoop集群部署_大数据_18

然后点击安装位置,点击并不做其他配置保存即可。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_19

这里陪配置主机名,点击应用。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_20

接着点击配置,为虚拟机设置IP地址、子网掩码、网关等,在之前先查询本机IP地址,window系统按住win+r键输入cmd,或者直接打开命令提示符,输入ipconfig即可查询IP地址,linux系统输入ifconfig即可查询IP地址,注意这里为虚拟机配置IP地址要在同一网段下,比如作者的电脑的IP地址是192.168.8.117,那么为虚拟机配置的IP地址可以为192,168.8.121,也就说前面三个必须一样。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_21

 网络连接配置可以参照作者的来配置。

hadoop一键集群部署 超详细的hadoop集群部署_学习_22

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_23

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_24

然后点击开始安装,不设置用户,只创建人root密码。

hadoop一键集群部署 超详细的hadoop集群部署_学习_25

到这一步,第一台虚拟机已经安装完成,接着以同样的方式再安装两台虚拟机。为了便于后续管理,作者建议三台虚拟机名字分别为,hadoop01、hadoop02、hadoop03。

二、配置

在三台虚拟机上分别输入以下指令。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

 

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_26

 按照下面这个进行修改。

BOOTPROTO=static           #使用静态IP地址

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_27

接着实行以下指令,关闭防火墙。

执行如下命令关闭防火墙:
systemctl stop firewalld

执行如下命令关闭防火墙开机启动:
systemctl disable firewalld
执行命令成功后,会出现如下2行信息。
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

在hadoop.bgd01的etc目录下hosts文件添加IP地址和主机名映射表。

vi /etc/hosts

127.0.0.1   localhost localhost.hugs localhost4 localhost4.localdomain4
::1         localhost localhost.hugs localhost6 localhost6.localdomain6
192.168.16.121 hadoop01.bgd01
192.168.16.122 hadoop02.bgd01
192.168.16.123 hadoop03.bgd01

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_28

 

 接下来配置ssh免密登录,

在hadoop01.bgd01上,进入root用户主目录 /root,执行如下命令,生成 .ssh 目录和密匙对及免密登录授权文件:
    
    执行如下命令,生成密匙对:
    ssh-keygen -t rsa

    下面是生成密匙对的过程:
    Generating public/private rsa key pair. #提示生成 公/私 密匙对
    Enter file in which to save the key (/root/.ssh/id_rsa):    #提示保存私匙的目录路径及文件名,按回车
    Created directory '/root/.ssh'.  #在“/root”下创建了“.ssh”目录
    Enter passphrase (empty for no passphrase):  #提示输入密码短语,如果不需要,按回车
    Enter same passphrase again:    #提示再次输入相同密码短语,如果不需要,按回车
    Your identification has been saved in /root/.ssh/id_rsa.  #生成了密匙文件id_rsa
    Your public key has been saved in /root/.ssh/id_rsa.pub.  #生成了公匙文件id_rsa.pub

分别在hadoop02.bgd01、hadoop03.bgd01上执行相同的操作,生成密钥。


将公钥合并到hadoop01.bgd01上的authorized_keys文件中。
    分别在hadoop01.bgd01、hadoop02.bgd01、hadoop03.bgd01上执行如下命令:
    ssh-copy-id hadoop01.bgd01
    出现如下提示时,按#提示操作:
    Are you sure you want to continue connecting (yes/no)?   #输入"yes"
    root@hadoop01.hugs's password:    #输入hadoop01.bgd01的root账号密码

    这样就完成了对公匙的合并。hadoop01.bgd01的“/root/.ssh”目录下会产生公匙授权文件 authorized_keys。其实该步操作是将三台主机上id_rsa.pub中的内容合并添加到authorized_keys中。


实现hadoop01、hadoop02、hadoop03之间的相互免密码登录。
    在hadoop01上执行如下命令,将hadoop01上的公匙授权文件 authorized_keys 同步分发给hadoop02到hadoop03 :
    scp /root/.ssh/authorized_keys hadoop02.bgd01:/root/.ssh/
    执行该命令时,会提示输入hadoop02.bgd01的root登录密码,输入相应密码即可。

    scp /root/.ssh/authorized_keys hadoop03.bgd01:/root/.ssh/
    执行该命令时,会提示输入hadoop03.bgd01的root登录密码,输入相应密码即可。

    以后三台主机之间,相互登录其它主机就不需要输入密码了。登录命令如下:
    ssh 主机名称

这里配置完以后可以使用远程登录软件,远程连接三台虚拟机,远程连接工具已经放在百度网盘需要可自行下载。

三、Hadoop集群搭建

在hadoop01.bgd01上创建以下文件
在根目录“/”下创建3个目录
    /export/data/ :存放数据类文件
    /export/servers/ :存放服务类文件
    /export/software/ :存放安装包文件

mkdir -p /export/software /export/servers /export/data

1、配置jdk

预备工作-在主机hadoop01上安装上传文件工具rz软件
    yum install lrzsz -y

进入/export/sofewate目录下输入rz上传jdk
cd /export/software

rz

解压jdk到/export/servers目录下
tar -zvxf jdk-8u333-linux-x64.tar.gz -C /export/servers/

进入到/export/servers目录下对jdk进行重命名。
cd /export/servers

mv jdk1.8.0_333/ jdk

配置环境变量
vi /etc/profile

export JAVA_HOME=/export/servers/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存后退出。然后执行 "source /etc/profile"指令使配置文件生效。

使用如下命令验证JDK安装是否成功,如果成功,会出现版本等信息。
java -version

hadoop一键集群部署 超详细的hadoop集群部署_hadoop_29

 

hadoop一键集群部署 超详细的hadoop集群部署_学习_30

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_31

 

2、配置hadoop

进入/export/software/目录下对hadoop进行解压
cd /export/software/

tar -zxvf hadoop-2.10.1.tar.gz -C /export/servers/

在/etc/profile文件中, 配置 Hadoop 系统环境变量
    执行如下命令:
    vi /etc/profile

    添加如下2行:
    export HADOOP_HOME=/export/servers/hadoop-2.10.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    保存后退出。
    执行如下命令,使配置文件生效:
    source /etc/profile
    
使用如下命令验证hadoop安装是否成功,如果成功,会出现版本等信息。
    hadoop version

接下对hadoop集群的文件进行修改

cd /export/servers/hadoop-2.10.1/etc/hadoop/

修改 hadoop-env.sh 文件
vi hadoop-env.sh

export JAVA_HOME=/export/servers/jdk

hadoop一键集群部署 超详细的hadoop集群部署_学习_32

 

修改 core-site.xml 文件

  <configuration>
    <!-- 设置Hadoop的文件系统,由URI指定 -->
    <property>      
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01.bgd01:9000</value>
    </property>

    <!-- 配置Hadoop的临时目录,默认 /tmp/hadoop-$(user.name) -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/servers/hadoop-2.10.1/tmp</value>
    </property>
  </configuration>

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_33

 

修改 hdfs-site.xml 文件

  <configuration>
    <!-- 指定HDFS的副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <!-- 设置第二namenode所在主机的IP和端口 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop02.bgd01:50090</value>
    </property>
  </configuration>

hadoop一键集群部署 超详细的hadoop集群部署_学习_34

 

修改 mapred-site.xml 文件
   先将mapred-site.xml.template 复制到 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

  <configuration>
    <!-- 指定MapReduce运行时框架,这里指定在YARN上,默认是local -->
    <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>
  </configuration>

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_35

 

修改 yarn-site.xml 文件
 (根据该节点上可用的物理内存总量调整yarn.nodemanager.resource.memory-mb的值,文件中是2048M,默认是8192M;如果节点内存不够8GB,则需要调整,否则NodeManager进程无法启动或者启动后自动结束)

  <configuration>
      <!-- 指定YARN集群的管理者(ResourceManager)的地址 -->
      <property>
           <name>yarn.resourcemanager.hostname</name>
           <value>hadoop01.bgd01</value>
      </property>

      <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
      </property>
  </configuration>

hadoop一键集群部署 超详细的hadoop集群部署_学习_36

 

修改 slaves 文件

   hadoop01.bgd01
   hadoop02.bgd01
   hadoop03.bgd01

注:上述配置中,hadoop01.bgd01、hadoop02.bgd01、hadoop03.bgd01是主机名称,每个人根据自己的情况进行修改。

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_37

 

将集群主节点的配置文件和/export整个目录分发到其它节点
    完成Hadoop集群主节点hadoop01的配置后,还需要将系统环境配置文件、JKD安装目录和Hadoop安装目录分发到子节点hadoop02和hadoop03上。具体指令如下:

将/export整个目录分发到其它节点"/"目录下:
    scp -r /export hadoop02.bgd01:/
    scp -r /export hadoop03.bgd01:/

将配置文件/etc/profile分发到其它节点:
    scp /etc/profile hadoop02.bgd01:/etc/profile
    scp /etc/profile hadoop03.bgd01:/etc/profile

    执行完上述命令后,还需在hadoop02、hadoop03上分别执行"source /etc/profile"指令立即刷新配置文件。

 Hadoop集群测试

格式化HDFS文件系统
hdfs namenode -format
执行格式化指令后必须出现 successfulluy formatted 才表示格式化成功。

在Hadoop01上启动所有HDFS服务进程
start-dfs.sh

在Hadoop01上启动所有YARN服务进程
start-yarn.sh

开启所有服务
start-all.sh

查看服务进程
集群启动后,如果正常,执行命令:
JPS
查看进程。

hadoop01上可以查看到如下进程:
ResourceManager
NodeManager
JPS
DataNode
NameNode

hadoop02上可以查看到如下进程:
NodeManager
JPS
DataNode
SecondaryNameNode

hadoop03上可以查看到如下进程:
NodeManager
JPS
DataNode

通过UI查看Hadoop运行状态
在浏览器中查看和管理集群。
Hadoop状态查看
http://hadoop01.bgd01:50070/dfshealth.html

HDFS状态查看
http://hadoop01.bgd01:50070/explorer.html

YARN状态查看
http://hadoop01.hugs:8088/cluster

关闭Hadoop集群
在Hadoop01上关闭所有YARN服务进程
stop-yarn.sh

在Hadoop01上关闭所有HDFS服务进程
stop-dfs.sh

关闭所有服务
stop-all.sh

hadoop一键集群部署 超详细的hadoop集群部署_大数据_38

 

hadoop一键集群部署 超详细的hadoop集群部署_大数据_39

 

hadoop一键集群部署 超详细的hadoop集群部署_hadoop一键集群部署_40

 

四、集群体验

在 /export/data下创建文件 word.txt,内容如下:
hello itcast
hello itheima
hello hadoop

vi /export/data/word.txt

在HDFS上创建目录
hadoop fs -mkdir -p /wordcount/input  #-p参数表示递归创建,与Linux的mkdir命令一致

上传文件word.txt 
hadoop fs -put word.txt /wordcount/input/

查看 HDFS 上 /wordcount/input/ 目录下的内容
hadoop fs -ls /wordcount/input/

进行词频统计
cd /export/servers/hadoop-2.10.1/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount /wordcount/input /wordcount/output

打开HDFS的UI界面,查看HDFS中词频统计结果
/wordcount/output/part-r-00000 中是统计结果

hadoop一键集群部署 超详细的hadoop集群部署_hdfs_41

 

hadoop一键集群部署 超详细的hadoop集群部署_大数据_42