Hadoop伪分布完全分布搭建全过程——超详细

安装前的准备工作**

1.安装虚拟机,Linux操作系统
(vmware安装参考:https://blog.csdn.net /qq_28090573/article/details/82724910)
(vitrualBox安装参考:https://www.jianshu.com/p/fba87fa4f028)
**
2.防火墙设置:
查看防火墙状态:
$ sudo ufw status
若是激活状态 (active)则关闭防火墙:
$ sudo ufw disable
再次查看防火墙状态:
$ sudo ufw status
状态:inactive
3.SSH安装
查看SSH客户端是否安装
$ sudo dpkg -l | grep ssh
如返回内容包含openssh-client”的字样,说明已 经安装SSH客户端软件
否则按如下指令安装
$ sudo apt-get install openssh-client
安装SSH服务端
$ sudo apt-get install openssh-server
sudo apt-get -update
重启SSH服务:
$ sudo /etc/init.d/ssh restart
4.JDK安装
从windows上传JDK包到ubuntu(本操作用的为jdk-8u144-linux-x64.tar.gz)
在ubuntu下,进到jdk-8u144-linux-x64.tar.gz所在路径,解压
$ tar -xvf jdk-8u144-linux-x64.tar.gz
解压完成后,执行如下命令查看Java路径情况:
$ ls -lrt
$ pwd
在环境变量文件里配置Java对应的环境变量:
$ cp ~/.bashrc ~/bashrc.bak
$ vi ~/.bashrc
在文件内容的末尾添加如下代码
export JAVA_HOME=/home/l/software/jdk1.8.0_144(注意写自己路径)
export PATH= J A V A H O M E / b i n : {JAVA_HOME}/bin: JAVAHOME/bin:PATH
重新加载环境变量
$ source ~/.bashrc
验证安装是否成功
$ java -version
出现如下版本信息表示JDK安装成功。
java version “1.8.0_144”
Java™ SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot™ 64-Bit Server VM (build 25.144-b01, mixed mode)
实验一:搭建Hadoop单机模式环境

1.进入Apache官网http://archive.apache.org/dist/hadoop/common/选择对应版本的hadoop二进制(binary)压缩包,下载到windows系统目录下,再通过WinSCP工具将安装包上传至Ubuntu系统。

2.解压安装包:进入hadoop-2.7.3.tar所有路径,解压安装包,并创建软链接
$ tar -xvf hadoop-2.7.3.tar
$ ln -s /home/lcg/software/hadoop-2.7.3 ~/hadoop

3.进入Hadoop配置文件所在目录,修改hadoop-env.sh文件。
$ cd ~/hadoop/etc/hadoop
$ vi hadoop-env.sh

4.找到export JAVA_HOME一行,把行首的#去掉,并按实际修改JAVA_HOME的值。
The java implementation to use.
export JAVA_HOME=/home/lcg/software/jdk1.8.0_144

5.测试执行
$ ~/hadoop/bin/hadoop version
如果出现以下信息,说明安装成功:
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using ~/hadoop/share/hadoop/common/hadoop-common-2.7.3.jar
实验二:搭建Hadoop伪分布式模式环境

  1. 配置Hadoop环境变量:
    为了可以在任意目录下使用hadoop命令,我们需要在/.bashrc目录下配置hadoop的环境变量,使用vi命令打开/.bashrc文件:
    $ vi ~/.bashrc
    在打开文件的末尾添加以下两行代码,保存并退出。
    export HADOOP_HOME=~/hadoop
    export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
    使配置立即生效
    $ source ~/.bashrc
    验证:切换到任意目录,比如~目录,用hadoop version命令验证,输出版本信息为正确配置。
    $ cd ~
    $ hadoop version
    2. SSH免密登陆设置****
    (1)生成密钥对
    $ ssh-keygen -t rsa
    其中,rsa表示加密算法,键入上面一条命令后连续敲击三次回车键,系统会自动在~/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa),可通过命令查看。
    $ ls ~/.ssh
    id_rsa id_rsa.pub
    (2)追加公钥
    我们以本机登录本机自己为例(连接本机),将公钥追加到~/.ssh/authorized_keys文件中。
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu
    通过命令$ ls ~/.ssh查看,认证文件authorized_keys已经生成。读者如果感兴趣,可以通过cat命令查看authorized_keys内容是否包含有id_rsa.pub的内容。
    $ ls ~/.ssh
    authorized_keys id_rsa id_rsa.pub
    (3)免密登录验证
    执行命令ssh ubuntu,首次登陆需要输入“yes”
    3. 设置Hadoop配置文件($HADOOP_HOME/etc/hadoop)
    配置core-site.xml 把这个路径模拟成hdfs路径
<configuration>
	<property>
		  <name>hadoop.tmp.dir</name>
		  <value>/home/l/hadoop/tmp</value>#注意路径
 	</property>
	<property>
		  <name>fs.defaultFS</name>
		  <value>hdfs://localhost:9000</value>
	</property>
</configuration>

配置hdfs-site.xml 冗余备份

<configuration>
    <property>	
	     <name>dfs.replication</name>
	     <value>1</value>
    </property>
</configuration>

配置mapred-site.xml,没有此文件将mapred-site.xml.temporary文件复制为mapred-site.xml

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

配置yarn-site.xml

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

4. 格式化HDFS文件系统:
格式化的过程是创建初始目录和文件系统结构的过程。格式化只需进行一次,下次启动不再需要格式化。执行以下命令:
$ hdfs namenode -format
5. 启动Hadoop守护进程验证
分别启动HDFS和YARN进程:
启动HDFS:
s t a r t − d f s . s h 用 start-dfs.sh 用 startdfs.sh jps命令验证,正确启动会出现以下三个进程:
$ jps
NameNode
DataNode
SecondaryNameNode
启动YARN:
s t a r t − y a r n . s h 用 start-yarn.sh 用 startyarn.sh jps命令验证,正确启动将多出以下两个进程:
$ jps
NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager
6. 浏览器验证:
1) 浏览器访问Hadoop文件系统
浏览器访问Hadoop文件系统默认端口号为50070,打开Ubuntu自带的火狐浏览器,输入以下网址获得Hadoop Web UI的服务,可以查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。网址为:http://localhost:50070
在这里插入图片描述注意:如想在宿主机(物理机)的浏览器访问则需要将localhost换成虚拟机的ip,用ifconfig命令查看虚拟机ip ,如:http://192.168.30.128:50070
2) 浏览器查看集群所有应用程序
访问集群中的所有应用程序的默认端口号为8088。使用以下URL访问该服务。网址为:http://localhost:8088
在这里插入图片描述7. 停止所有进程
分别关闭HDFS和YARN
$stop-dfs.sh
$stop-yarn.sh

或者使用以下命令停止所有进程:
$stop-all.sh
用命令jps查看:关闭了Hadoop所有进程
$ jps
jps
至此Hadoop伪分布式搭建完成。
实验三:搭建Hadoop完全分布式模式环境
准备工作:

  1. 在伪分布模式下,确保已关闭Hadoop所有进程。
  2. 为了完全分布式能正确格式化HDFS系统,删除 H A D O O P H O M E / t m p 及 {HADOOP_HOME}/tmp及 HADOOPHOME/tmp{HADOOP_HOME}/logs目录下的所有内容。
    1)删除${HADOOP_HOME}/tmp目录下所有内容:
    $ rm -rf ~/hadoop/tmp/*
  1. 删除${HADOOP_HOME}/log目录下所有内容:
    $ rm -rf ~/hadoop/log/*

配置完全分布式模式:

  1. 修改主机名称
    1)将/etc/ hostname文件修改成Master:
    $sudo vi /etc/hostname
    Master
    注意:reboot重启后才生效
    2)将/etc/hosts文件修改成如下内容:
    $ 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)重启Ubuntu生效:
    $ 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) 关闭ubuntu客户机,否则进行无法克隆操作
    2) 左侧栏点击要克隆的ubuntu客户机,右键管理克隆
    在这里插入图片描述
    3) 连续点击下一步至克隆类型,选择创建完整克隆,点击下一步
    在这里插入图片描述4) 修改虚拟机名称和位置:关于位置选择,最好每台客户机单独建一个文件夹:
    在这里插入图片描述
    5) 点击完成,等待克隆完成,此过程大概需要3-5分钟。
    按照如上方法,一共克隆出2台机器。
    6) 修改2台克隆机的主机名称
    打开第一台克隆机,将其主机名称命名为Slave1,然后reboot重启生效。

$ sudo vi /etc/hostname

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

$ sudo vi /etc/hostname

Slave2
$ reboot

  1. 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
  1. 配置完全分布式文件
    在伪分布式模式下已经配置了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/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/
  1. 指定集群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
  1. 启动Hadoop守护进程
    分别启动HDFS和YARN
$ start-dfs.sh
$ start-yarn.sh

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

$ start-all.sh
  1. 验证Hadoop进程
  1. $ jps命令验证:
    用$ jps命令分别在每一台机器验证
$ jps

执行jps命令后,Master主机包含以下三个进程为启动成功
SecondaryNameNode
NameNode
ResourceManager
分别在三台Slave主机执行jps命令,包含以下两个进程为启动成功
NodeManager
DataNode
注:如果某个机器少了某个进程,应该到相应机器去找对应的log查看原因,log存放路径为 H A D O O P H O M E / l o g s 目 录 下 。 例 如 : S l a v e 2 机 器 少 了 D a t a N o d e 进 程 , 则 应 该 进 入 到 S l a v e 2 机 器 的 {HADOOP_HOME}/logs目录下。例如:Slave2机器少了DataNode进程,则应该进入到Slave2机器的 HADOOPHOME/logsSlave2DataNodeSlave2{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个节点正在运行。
在这里插入图片描述

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值