hadoop环境构建

《Hadoop大数据技术》

  • 实验目的
  1. 安装Java环境
  2. 搭建Hadoop单机模式
  3. 在hadoop伪分布式基础上搭建Hadoop完全分布式模式环境  
  • 实验环境 

Win10+Centos7(Vmware workstation14)+winscp

  1. jdk 环境变量配置

打开一个terminal窗口,切换到管理员命令,关闭网络防火墙,并取消开机自启防火墙。

查找系统自带的openjdk并删除。

删除后再检查一次是否完全删除openjdk

查看本机的地址

 

 

 

 

 

 

 

打开安装的winscp,将下载好的hadoop-2.6.0.tar.gz和jdk-8u181.tar.gz传到虚拟机的Documents中

 

 

 

 

 

再usr文件下创建java文件夹

 

 

将Documents中jdk的压缩包移动到新建的java文件中并解压

 

 

 

 

编辑 /home/wj/.bash_profile 文件

 

 

 

 

 

 

 

使用source  /home/wj/.bash_profile命令时文件生效,然后用java -version命令检验jdk配置是否成功。

 

 

 

 

  1.  安装hadoop

解压hadoop-2.6.0.tar.gz安装包:解压安装包至~目录下

 

 

 

用 vi ~/.bashrc 命令 编辑.bashrc文件,并使之生效

添加配置信息:

export HADOOP_HOME=~/hadoop-2.6.0/

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 

 

 

 

 

 

 

使用hadoop version命令,检验配置信息是否生效。

 

 

 

 

 

 

切换目录: cd hadoop-2.6.0/etc/hadoop/

编辑 hadoop-env.sh 文件

修改

export JAVA_HOME=/usr/java/jdk1.8.0_181/

 

 

 

 

 

配置core-site.xml文件

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://master</value>

</property>

 

 

 

 

 

 

配置hdfs-site.xml文件

    <property>

     <name>dfs.replication</name>

     <value>1</value>

</property>

 

 

 

 

 

配置mapred-site.xml

先将mapred-site.xml.template文件复制为mapred-site.xml。

 

 

 

再修改mapred-site.xml文件

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

 

 

 

 

 

配置yarn-site.xml

    <property>                 

              <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

    <property>

  <name>yarn.resourcemanager.hostname</name>

  <value>master</value>

    </property>

 

 

 

 

 

 

 

 

格式化HDFS文件系统:格式化的过程是创建初始目录和文件系统结构的过程。格式化只需进行一次,下次启动不再需要格式化

hdfs namenode -format

 

 

 

 

 

使用jps命令,正确启动会出现至少三个进程

NameNode

DataNode

SecondaryNameNode

 

 

 

 

 

启动YARN,用$ jps命令验证,正确启动将多出以下两个进程

 

 

 

 

 

 

 

 

 

浏览器验证

 

在浏览器地址栏中输入master:50070网址,查看NameNode 和 Datanode 信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

停止所有进程

stop-all.sh

 

 

 

 

 

 

 

用命令jps查看:关闭了Hadoop所有进程

 

 

 

  1. 在hadoop伪分布式基础上搭建Hadoop完全分布式模式环境

 准备工作:

  1. 在伪分布模式下,确保已关闭Hadoop所有进程。
  2. 为了完全分布式能正确格式化HDFS系统,删除${HADOOP_HOME}/logs目录下的所有内容。

 

 

 

 删除${HADOOP_HOME}/log目录下所有内容:

$ rm -rf ~/hadoop/log/*

 

 

配置完全分布式模式:

  1. 修改主机名称

将/etc/ hostname文件修改成Master:

vi /etc/hostname

 

 

 

 

 

将内容改为Master

reboot重启后生效

  1. 将/etc/hosts文件修改成如下内容

文件原内容:

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

修改为

127.0.0.1  localhost

192.168.81.142 master

192.168.81.143 slave1

192.168.81.144 Slave2

 

注:192.168.81.139 master为本机的ip,这里先指定了Slave1/Slave2机器及对应的IP,这些机器在后面步骤会由Master机器克隆出来。

reboot重启虚拟机使修改文件生效。

重启后主机名变成了Master,连接网络后

用命令$ ping Master,就可以ping通Master主机了

注:退出使用ctrl+c。

 

 

 

 

 

 

 

 

测试slave1连通性

 

 

 

 

测试slave2连通性

 

 

 

 

  1.  克隆客户机

因为要搭建由3台机器组成的完全分布式集群,现在只有1台Master机器,所以需要用Master机器克隆出另外2台机器。

克隆方法:

1) 关闭Linux客户机,否则进行无法克隆操作

2) 左侧栏点击要克隆的LInux客户机,右键管理克隆

 

 

 

 

 

 

                                             

 

3) 连续点击下一步至克隆类型,选择创建完整克隆,点击下一步

 

 

 

                                      

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 修改虚拟机名称和位置:关于位置选择,最好每台客户机单独建一个文件夹:

 

 

 

 

 

 

 

 

 

 

5) 点击完成,等待克隆完成,此过程大概需要3-5分钟。

 

 

 

 

 

 

 

 

 

 

 

 

重复克隆方法5步,克隆slave2虚拟机

 

 

 

 

8)修改2台克隆机的主机名称

9)重启两台虚拟机

打开第一台克隆机,将其主机名称命名为Slave1,然后reboot重启生效

 vi /etc/hostname

 

 

打开第二台克隆机,将它的主机名称命名为Slave2,然后reboot重启生效。

 

 

  1.  SSH配置

在完全分布式模式下,集群内所有机器需要免密登录到集群内所有机器,即 Master、Slave1、Slave2三台机器需要免密登录到其他任意两台机器。免密登录的方法和伪分布的免密登录方法一样,在Master、Slave1、Slave2机器生成公/私密钥对,然后将公钥发送给集群内的所有机器,以Master免密登录其他集群内的所有机器为例,其他两台机器重复以下操作。

1)在Master主机生成密钥对

ssh-keygen -t rsa

 

 

 

 

 

 

 

 

 将Master公钥id_rsa.pub追加到Master的~/.ssh/authorized_keys文件中,并复制到另外2台Slave机器上

scp ~/.ssh/authorized_keys  wj@slave1: ~/

 

scp ~/.ssh/authorized_keys  wj@slave2:~/

分别在slave1和slave2中使用ssh-keygen -t rsa命令产生密钥

 

 

 

                                           

 

 

 

 

 

分别使用chmod 600 ~/.ssh/authorized_keys命令修改slave1和slave2中的文件权限

 

 

验证免密登录:在Master主机验证免密码登录集群所有机器

 

 

 

 

 

  1.  配置完全分布式文件

1) 配置core-site.xml

修改core-site.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>~/hadoop-2.6.0/tmp</value>

        </property>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://master</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

 

2)配置hdfs-site.xml

修改hdfs-site.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

3) 配置mapred-site.xml

mapred-site.xml与伪分布式的配置一样,不需改变。

4) 配置yarn-site.xml

修改yarn-site.xml文件内容为:

<?xml version="1.0"?>

<configuration>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>master</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

 

 

 

 

 

 

 

 

 

5) 分发配置:将Master的配置目录文件分发至其他机器

 

$ cd ~/hadoop/etc/

$ scp -r hadoop hadoop@Slave1:~/hadoop/etc/

$ scp -r hadoop hadoop@Slave2:~/hadoop/etc/

 准备工作:

1. 在伪分布模式下,确保已关闭Hadoop所有进程。

2. 为了完全分布式能正确格式化HDFS系统,删除${HADOOP_HOME}/tmp及${HADOOP_HOME}/logs目录下的所有内容。

1)删除${HADOOP_HOME}/tmp目录下所有内容:

$ rm -rf ~/hadoop/tmp/*

2) 删除${HADOOP_HOME}/log目录下所有内容:

$ rm -rf ~/hadoop/log/*

配置完全分布式模式:

1.修改主机名称

1)将/etc/ hostname文件修改成Master:

$sudo vi /etc/hostname  

Master

注意:reboot重启后才生效

2)将/etc/hosts文件修改成如下内容:

原内容:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

修改为:

$ sudo vi /etc/hosts

127.0.0.1  localhost

192.168.30.128 Master

192.168.30.129 Slave1

192.168.30.130 Slave2

注意:这里先指定了Slave1/Slave2机器及对应的IP,这些机器在后面步骤会由Master机器克隆出来。

3)重启Linux生效:

$ reboot

重启后主机名变成了Master,用命令$ ping Master,就可以ping通Master主机了。

hadoop@Master:~$ ping Master

PING Master (192.168.30.128) 56(84) bytes of data.

64 bytes from Master (192.168.30.128): icmp_seq=1 ttl=64 time=0.014 ms

64 bytes from Master (192.168.30.128): icmp_seq=2 ttl=64 time=0.085 ms

 

2.删除原来的SSH配置

因为主机名称已改变,新的主机名还没有加到公私密钥中,用$ ssh Master不能免密登录,需要删除原来的SSH,待重新生成新的SSH。

$ rm -rf ~/.ssh/*

3.克隆客户机

因为要搭建由3台机器组成的完全分布式集群,现在只有1台Master机器,所以需要用Master机器克隆出另外2台机器。

克隆方法:

1) 关闭Linux客户机,否则进行无法克隆操作

2) 左侧栏点击要克隆的LInux客户机,右键管理克隆

 

3) 连续点击下一步至克隆类型,选择创建完整克隆,点击下一步

4) 修改虚拟机名称和位置:关于位置选择,最好每台客户机单独建一个文件夹:

5) 点击完成,等待克隆完成,此过程大概需要3-5分钟。

按照如上方法,一共克隆出2台机器。

6) 修改2台克隆机的主机名称

打开第一台克隆机,将其主机名称命名为Slave1,然后reboot重启生效。

$ sudo vi /etc/hostname

Slave1

$ reboot

打开第二台克隆机,将它的主机名称命名为Slave2,然后reboot重启生效。

$ sudo vi /etc/hostname

Slave2

$ reboot

4.SSH配置

在完全分布式模式下,集群内所有机器需要免密登录到集群内所有机器,即 Master、Slave1、Slave2三台机器需要免密登录到其他任意两台机器。免密登录的方法和伪分布的免密登录方法一样,在Master、Slave1、Slave2机器生成公/私密钥对,然后将公钥发送给集群内的所有机器,以Master免密登录其他集群内的所有机器为例,其他两台机器重复以下操作。

1)在Master主机生成密钥对

$ ssh-keygen -t rsa -P ''

2) 将Master公钥id_rsa.pub追加到Master的~/.ssh/authorized_keys文件中,并复制到另外2台Slave机器上

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Master

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Slave1

$ ssh-copy-id -i  ~/.ssh/id-rsa.pub Slave2

3) 验证免密登录:在Master主机验证免密码登录集群所有机器

$ ssh Master

$ ssh Slave1

$ ssh Slave2

5.配置完全分布式文件

在伪分布式模式下已经配置了hadoop-env.sh,现在只需要配置4个xml即可,再将配置分发给其他机器。注意:以下配置均在Master机器操作。

进入Master机器的hadoop配置文件目录${HADOOP_HOME}/etc/hadoop/

$ cd ~/hadoop/etc/hadoop/

1) 配置core-site.xml

修改core-site.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>hadoop.tmp.dir</name>

                <value>~/hadoop-2.6.0/tmp</value>

        </property>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://Master</value>

        </property>

</configuration>

注意:fs.defaultFS修改为Master机器的IP地址或者主机名称

2)配置hdfs-site.xml

修改hdfs-site.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>2</value>

        </property>

</configuration>

3) 配置mapred-site.xml

mapred-site.xml与伪分布式的配置一样,不需改变。

4) 配置yarn-site.xml

修改yarn-site.xml文件内容为:

<?xml version="1.0"?>

<configuration>

        <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>Master</value>

        </property>

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

</configuration>

5) 分发配置:将Master的配置目录文件分发至其他机器

$ cd ~/hadoop/etc/

$ scp -r hadoop hadoop@Slave1:~/hadoop/etc/

$ scp -r hadoop hadoop@Slave2:~/hadoop/etc/

 

下面通通没测试

6.指定集群Slaves配置

此过程是与伪分布式模式最根本的区别。配置Slavers文件就是制定哪些机器是Slave机器,Hadoop将变成完全分布式模式。配置方法如下:

在Master主机操作,进入配置目录${HADOOP_HOME}/etc/hadoop/,修改slavers文件

$ cd ~/hadoop/etc/hadoop

$ vi slaves

将slaves文件的内容修改为:

Slave1

Slave2

注意:

1) 此配置只需要在Master机器进行,其他从机不需要配置此文件;

2) 要将slaves文件原来的localhost删除掉,再添加Slave主机名称, Slave主机名称也可以改为Slave IP地址。

7.格式化HDFS文件系统

$ hdfs namenode -format

8.启动Hadoop守护进程

分别启动HDFS和YARN

$ start-dfs.sh

$ start-yarn.sh

或者用以下命令启动HDFS和YARN, 注意:此命令已经过时,不推荐使用。

$ start-all.sh

 

9.验证Hadoop进程

1)  $ jps命令验证:

用$ jps命令分别在每一台机器验证

$ jps

执行jps命令后,Master主机包含以下三个进程为启动成功

SecondaryNameNode

NameNode

ResourceManager

分别在三台Slave主机执行jps命令,包含以下两个进程为启动成功

NodeManager

DataNode

注:如果某个机器少了某个进程,应该到相应机器去找对应的log查看原因,log存放路径为${HADOOP_HOME}/logs目录下。例如:Slave2机器少了DataNode进程,则应该进入到Slave2机器的${HADOOP_HOME}/logs目录下,查看datanode相关的log,找到启动失败的根源。

$ cd ~/hadoop/logs

$ more hadoop-hadoop-datanode-Slave2.log

2) 浏览器(WebUI)验证

查看hadoop的文件系统,可以查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件:在Master机器浏览器输入网址: http://Master:50070 ,出现以下界面为成功。 注:用虚拟机内部的浏览器。宿主机(物理机)访问则需要将localhost换成虚拟机的ip,用ifconfig命令查看虚拟机ip ,如:http://192.168.30.128:50070  

 

 

 

 

 

 

 

 

点击Datanodes,显示有两台datanode信息。

 

 

浏览器查看集群所有应用程序

访问集群中的所有应用程序的默认端口号为8088。输入网址:http://Master:8088

可以看到Active Nodes为2,说明集群有2个节点正在运行。

  • 实验总结(每项不少于20字)

存在问题: 

1、在设置免密登陆时,由master将authorized_keys发送到另外两台主机上时,出现错误,

2、Hadoop集群配置完成后无法成功分发配置

解决方法: 

手动复制master中的authorized_keys的内容到slave1和slave2中。

收获: 

  1. Hadoop配置文件后需要格式化,修改配置后也需要格式化
  2. 正常情况下使用scp命令传输到slave1和slave2的文件在home文件下
  3. 使用jps命令后提示command not found,有两个原因
  1. jdk没有安装,或者该命令被意外删除。
  2. 检查jdk的环境配置文件.bash_profile是否配置正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值