Hadoop Pseudo-Distributed Mode:【伪分布模式】搭建

2. Hadoop Pseudo-Distributed Mode:【伪分布模式】搭建

基于CentOS_64_6.8、jdk1.8、Hadoop2.7.3

[hadoop伪分布模式运行在单节点上,每个hadoop守护进程占用单独的Java进程]

设定CentOS的用户名为hadoop

自定义的集群软件安装位置:在/home/hadoop下创建一个soft目录

伪分布就是在一台节点上模拟一个分布式的集群,分布式有的守护进程都可以有,只不过是在一台节点上,就没有办法实现多副本,也就没有高可靠的性能,当然所谓的高可用更不可能。

文章目录

0.安装前准备

0.1 设置静态IP

0.1.1 查看子网IP
  1. 【编辑】–>【虚拟网络编辑器】–>

    ​ NET:(VMnet8)中:

    ​ 子网号码(192.168.204.0)【192.168.204 是将要加入的网段】

    ​ 子网掩码(255.255.255.0)
    在这里插入图片描述

0.1.2 查看MAC地址是否与eth0匹配

【对比ifconfig中的MAC地址与/etc/udev/rules.d/70-persistent-net.rules中的MAC地址】

[hadoop@localhost ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A9:54:0E
inet6 addr: fe80::20c:29ff:fea9:540e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:329 errors:0 dropped:0 overruns:0 frame:0
TX packets:348 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21327 (20.8 KiB) TX bytes:66744 (65.1 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:120 errors:0 dropped:0 overruns:0 frame:0
TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9328 (9.1 KiB) TX bytes:9328 (9.1 KiB)

[hadoop@localhost ~]$

在这里插入图片描述

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a9:54:0e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

在这里插入图片描述

0.1.3 root用户下修改【/etc/sysconfig/network-scripts/ifcfg-eth0】

[hadoop@localhost rules.d]$ cd /etc/sysconfig/network-scripts/
[hadoop@localhost network-scripts]$ vim ifcfg-eth0

修改:

​ BOOTPROTO=“static”

追加:

​ IPADDR=“192.168.204.100”【ip地址,前三位是虚拟网络编辑器中查看到的网段值,第四位任意】

​ NETMASK=“255.255.255.0”【子网掩码,虚拟网络编辑器中查找到的值】

​ NETWORK=“192.168.204.0”【子网号,就是虚拟网络编辑器中的子网号】

​ GATEWAY=“192.168.204.2”【网关,前三位参看虚拟网络编辑器,第四位任意,但不能和ip以及之后要配置的windows虚拟网卡VMnet8中的ip相同】

​ DNS1=“192.168.204.2”【首选DNS服务器,如果是使用本地的DNS,必须和网关ip一致,如果使用公有的DNS(例如:8.8.8.8是谷歌的,114.114.114.114是南京信风的)】

  • ifcfg-eth0文件修改如下:

DEVICE=“eth0”
BOOTPROTO=“static”
HWADDR=“00:0C:29:A9:54:0E”
IPV6INIT=“yes”
NM_CONTROLLED=“yes”
ONBOOT=“yes”
TYPE=“Ethernet”
UUID=“ba80fe09-30f1-408d-bc94-3f3b1b0b8947”

IPADDR=“192.168.204.100”
NETMASK=“255.255.255.0”
NETWORK=“192.168.204.0”
GATEWAY=“192.168.204.2”
DNS1=“192.168.204.2”

0.1.4 重启网络服务

[root@localhost network-scripts]# service network restart

0.1.5 设置windows主机中的虚拟网卡VMnet8

【控制面板】–>【网络和Internet】–>【网络连接】–>

​ 【右键VMnet8】–>【选择IPv4】–>【属性】

​ 使用下面的IP地址(DNS服务器地址)

​ IP地址: 192.168.204.1 【默认设置为1】

​ 子网掩码: 255.255.255.0 【虚拟网络编辑器中的子网掩码】

​ 默认网关: 192.168.204.2 【末位与IP地址不同即可,但设置的所有网关必须一致】

​ 首选DNS服务器:192.168.204.2 【本地的必须使用网关地址】

在这里插入图片描述
在这里插入图片描述

0.1.6 在windows上ping 192.168.204.100

在这里插入图片描述

0.1.7 在linux中ping 192.168.204.1,而不是物理机的IP地址

在这里插入图片描述

0.1.8 步骤6、7都ping通,且linux可以ping通外网(如:www.baidu.com)则完成静态IP设置

在这里插入图片描述

0.1.9 注意事项:
  1. 物理机的虚拟网卡VMnet8中的IP末位可以任意设置,网关的末位也可以任意设置,但是两者不可以相同。
  2. linux中的IP末位也可以任意设置,但是不可以与物理机虚拟网卡VMnet8以及网关的地址相同。
  3. 子网掩码一般都是255.255.255.0,也有其他情况,具体就看虚拟网络编辑器中的,或者在虚拟网络编辑器中自定义。
  4. 子网网段参看虚拟网络编辑器,也可以在虚拟网络编辑器中修改成自己想要的网段,都是虚拟的没什么不可以。但是,设定以后,所有相关的IP、网关、DNS前三位都要与其一致。
  5. DNS服务器使用本地的,必须使用网关地址。使用在线的可以有(114.114.114.114是南京信风的)

0.2 修改主机名

0.2.1 进入系统后的默认机器名都是localhost

​ [用户名@机器名 路径信息] $

​ 【用户名,是通过Terminal登录的用户名】

​ 【机器名,可以理解为IP映射地址】

​ 【用户名,是通过Terminal登录的用户名】

​ 【GUI登录名,是通过图形界面登录的用户名,实际上没有用到的时候】

0.2.2 root下修改【/etc/sysconfig/network】文件
  • 【[root@localhost etc]# vim /etc/sysconfig/network
  • 将HOSTNAME属性localhost.localdomain修改为【master】

[外链图片转存失败(img-zCqn2mrm-1568689031553)(F:\WDP1808JAVADEV\记录\全日制\note_image\1564585461729.png)]

0.2.3 重启系统

[root@localhost etc]# reboot

0.2.4 修改windows中的【C:\Windows\System32\drivers\etc\hosts】文件

【如果没有,手动创建。如果有,同步骤2】

[外链图片转存失败(img-rhQch7zB-1568689031559)(F:\WDP1808JAVADEV\记录\全日制\note_image\1564585698429.png)]

[外链图片转存失败(img-JKPIiXlC-1568689031566)(F:\WDP1808JAVADEV\记录\全日制\note_image\1564585762337.png)]

0.2.5 测试

【命令行下输入>ping master】

[外链图片转存失败(img-OCJglVdF-1568689031568)(F:\WDP1808JAVADEV\记录\全日制\note_image\1564585886596.png)]

0.3 在hosts文件添加各节点IP地址和别名(主机名)

别名就是:给这个节点的IP地址起一个名字,便于记忆与使用。这里设置的与主机名一致,可以不一致,便于记忆与使用尽量设置为一致的。

0.3.1 root下修改【/etc/hosts】文件
  • 【[root@localhost etc]# vim /etc/hosts】

  • 在文件末尾追加:

    192.168.204.100 master

    192.168.204.101 slave01
    192.168.204.102 slave02
    192.168.204.103 slave03

[外链图片转存失败(img-1jBBSu9a-1568689031571)(F:\WDP1808JAVADEV\记录\全日制\note_image\1564617095188.png)]

【该IP地址需先设定静态IP,否则设置会随动态IP失效】

【用master指向IP地址:192.168.204.100】

0.4 关闭防火墙

0.4.1 查看防火墙状态

[root@master etc]# service iptables status

[root@master etc]# chkconfig iptables --list
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@master etc]#

0.4.2 关闭防火墙【root用户下】

[root@master etc]# service iptables stop

【关闭防火墙】

[root@master etc]# chkconfig iptables off

【关闭开机启动防火墙】

[root@master etc]# chkconfig iptables --list
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@master etc]#

0.5 设置ssh无密登录

[hadoop@master ~]$ ssh localhost
hadoop@localhost’s password: 【输入密码】

0.5.1 生成密钥

[hadoop@master ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

[hadoop@master hadoop]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):

【这里直接回车,问你是否保存在默认的位置】

Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
2a:ef:8b:3b:9d:8c:ee:28:0d:9d:a1:f9:d3:32:be:1c hadoop@master
The key’s randomart image is:
±-[ RSA 2048]----+
| |
| |
| |
| . |
| + o S |
|+ o . |
| +E…+… |
|…*o+++ |
| o=B=++. |
±----------------+

【ssh-keygen】生成密钥
【-t rsa】加密方式是rsa
【-P ‘’】密码为空
【-f ~/.ssh/id_rsa】在该地址下创建id_rsa文件【不配也是默认该地址】

[hadoop@master ~]$ cd ~/.ssh
[hadoop@master .ssh]$ ls -l
总用量 20
-rw-------. 1 hadoop hadoop 1675 7月 29 13:44 id_rsa
-rw-r–r--. 1 hadoop hadoop 395 7月 29 13:44 id_rsa.pub
-rw-r–r--. 1 hadoop hadoop 391 7月 29 13:36 known_hosts

0.5.2 生成公钥库

[hadoop@master .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

0.5.3 修改公钥库权限

[hadoop@master .ssh]$ chmod 0600 ~/.ssh/authorized_keys

【必须修改,否则系统将无法识别该文件的权限,该文件就失效了】

【拷贝到其他节点上时,也必须检查该权限是否为600】

0.5.4 测试ssh登录

[hadoop@master .ssh]$ ssh master
The authenticity of host ‘master (192.168.204.110)’ can’t be established.
RSA key fingerprint is 15:10:37:43:13:e5:a6:a5:90:0e:89:fb:27:f9:3b:98.
Are you sure you want to continue connecting (yes/no)? yes

【首次ssh到某个节点,会校验一次,以后不会再出现】

Warning: Permanently added ‘master,192.168.204.110’ (RSA) to the list of known hosts.
[hadoop@master ~]$

[hadoop@master ~]$ ssh master
Last login: Mon Jul 29 13:56:06 2019 from master
【master | localhost】一个意思,都是代表IP地址

0.6 创建一个目录用于安装程序

$>mkdir /home/hadoop/soft

1.安装jdk【Jps查看Java进程】

1.1 拷贝【将jdk-8u121-linux-x64.tar.gz拷贝到/home/hadoop/soft下】

​ $>cp jdk-8u121-linux-x64.tar.gz ~/soft/

1.2 解压【进入/home/hadoop/soft目录,tar -zxvf jdk-8u121-linux-x64.tar.gz】

​ $>tar -zxvf jdk-8u121-linux-x64.tar.gz

1.3 创建软连接【ln -s jdk1.8.0_121/ jdk】

​ $>ln -s jdk1.8.0_121/ jdk

1.4 配置环境变量

1.4.1 修改~/.bash_profile文件【追加如下:】

​ $>vim ~/.bash_profile

【追加】
#jdk
export JAVA_HOME=/home/hadoop/soft/jdk
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

​ $>source ~/.bash_profile本次会话生效,如果要每个会话都生效,需重启系统

​ $>echo $JAVA_HOME【出现路径则成功】

[hadoop@master soft]$ echo $JAVA_HOME
/home/hadoop/soft/jdk

1.4.2 测试配置

在任意路径下输入jp

然后按下超过2次tab键

如果出现jp命令,则配置成功

2.安装hadoop

2.1 下载hadoop二进制包(或拷贝)

​ 【下载hadoop安装包,或者拷贝到目录下】

2.2 解压hadoop安装包【进入/home/hadoop/soft,tar -zxvf hadoop-2.7.3.tar.gz】

​ $>tar -zxvf hadoop-2.7.3.tar.gz

2.3 创建软连接【ln -s hadoop-2.7.3 hadoop】

​ $>ln -s hadoop-2.7.3 hadoop

2.4 配置环境变量

2.4.1 修改~/.bash_profile文件【追加如下:】

​ $>vim ~/.bash_profile

【追加】
#hadoop
export HADOOP_HOME=~/soft/hadoop
export PATH= H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:HADOOP_HOME/sbin:$PATH

​ $>source ~/.bash_profile【生效】

​ $>echo $HADOOP_HOME【出现路径则成功】

[hadoop@master soft]$ echo $HADOOP_HOME
/home/hadoop/soft/hadoop

2.4.2 测试配置

在任意路径下输入start

按下超过2次tab键

如果出现start-dfs.sh,则配置成功

2.5 修改配置文件

2.5.1 修改【$HADOOP_HOME/ect/hadoop】文件夹下的core-site.xml

[也就是:/home/hadoop/soft/hadoop-2.7.3/etc/hadoop目录下的core-site.xml文件]

$>cd /home/hadoop/soft/hadoop/etc/hadoop

$>vim core-site.xml

【在中添加如下:】

<configuration>
		<property>
				<name>fs.defaultFS</name>
				<value>hdfs://localhost:9000</value>
		</property>
</configuration>

【用于存储的文件系统设置,用URI实现,主机名:localhost(代表本地),端口号:9000(沿用旧版,新版是8020,但是会和某个组件端口冲突,还是沿用旧版)】

2.5.2 修改【$HADOOP_HOME/etc/hadoop】文件夹下的hdfs-site.xml

[也就是:/home/hadoop/soft/hadoop-2.7.3/etc/hadoop目录下的hdfs-site.xml文件]

$>vim host-site.xml

【在中添加如下:】

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

【设置HDFS文件系统的副本数,为1】

2.5.3 hadoop配置JAVA_HOME路径

$>cd $HADOOP/etc/hadoop
$>vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/soft/jdk

  • 如果不设置:

[hadoop@smaster name]$ start-dfs.sh
Starting namenodes on [localhost]
localhost: Error: JAVA_HOME is not set and could not be found.
localhost: Error: JAVA_HOME is not set and could not be found.

  • 原因:

[/home/hadoop/soft/hadoop/etc/hadoop/hadoop-env.sh]

The java implementation to use.

export JAVA_HOME=${JAVA_HOME}

【因为在设置HADOOP_HOME时,将HADOOP_HOME放在了JAVA_HOME之前,因此无法识别JAVA_HOME的配置,所以要固定指定JAVA_HOME的路径】

2.6 修改HDFS默认存储路径

2.6.1 修改默认存放数据home的地址为

[src:core-site.xml]

<property>
	<name>hadoop.tmp.dir</name>
	<value>/home/hadoop/tmp/hadoop-${user.name}</value>
	<description>A base for other temporary directories.</description>
</property>

【这个是设置HDFS存放数据地址的路径:

【/home/hadoop/tmp/hadoop-username/】

[dest:$HADOOP_HOME/etc/hadoop/core-site.xml]

2.6.2 修改默认存放namenode节点数据的地址为

[src:hdfs-site.xml]

<property>
		<name>dfs.namenode.name.dir</name>
		<value>file://${hadoop.tmp.dir}/dfs/name</value>
【追加,/home/hadoop/backup/dfs/name】【追加这个是为了备份namenode数据】
</property>

【这个才是namenode节点存放数据的路径,这个路径在整个HDFS存放路径下的子路径】

【/home/hadoop/tmp/hadoop-username/】

[dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]

2.6.3 修改默认存放datanode节点数据的地址为

[hdfs-site.xml]

<property>
		<name>dfs.datanode.data.dir</name>
		<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>

【这个是datanode的存放位置,同namenode】

[dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]

3.格式化文件系统

【目的:创建fsimage镜像文件】

3.1 格式化

[hadoop@master ~]$ hdfs namenode -format

3.2 开启hadoop的HDFS【start-dfs.sh】

【但是在实际使用中少用此方式,因为无法关闭一部分功能,要是全部关闭则又是HDFS系统所不允许的,全关闭的话,整个系统就关了,那就无法进行有效管理】

[hadoop@master hadoop]$ start-dfs.sh

Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-namenode-master.out
localhost: starting datanode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-datanode-master.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established.
RSA key fingerprint is 72:96:2e:5f:bd:ea:b4:7b:27:c1:43:99:a0:6a:01:1b.
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added ‘0.0.0.0’ (RSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/soft/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-master.out
[hadoop@master hadoop]$

3.3 检验【$>jsp】

[hadoop@master hadoop]$ jps

9200 DataNode
9106 NameNode
9493 Jps
9384 SecondaryNameNode
[hadoop@master hadoop]$

3.4 注意

  • 【不能再次格式化namenode】
    • 【否则会改变namenode的cluster ID,导致namenode与datanode的cluster ID不一致,无法启动服务,因此不能随意格式化】
    • 【如果cluster ID不一致,修改/tem/hadoop-hadoop/dfs/data/current/VERSION中的cluster ID,块池中也有一个,都要改】
    • 【hadoop-hadoop文件夹:hadoop-username规则是这样的,拼接上创建文件系统时的用户】
    • 【如果在运行时,格式化,日志文件不会格式化,会导致之后namenode无法启动,要删除文件夹下所有的edit*文件】

4.测试连接

打开浏览器:http://master:50070

【先在linux上测试,然后在windows上测试】

【如果linux上不行,那不大可能,因为3个主要的服务全都正常开启了】

【如果出错,某个服务应该无法启动,那么应该使用hdfs + 未开启的服务名[namenode、secondarynamenode、datanode]来开启进程,并查看错误日志,去解决问题。假设不行,那么一定是之前的配置出错,重新查看配置】

【如果windows上不行,先看能不能ping通linux。如果可以,那么就到linux的界面中查找防火墙,将50070端口加入可访问】

总结:

  • 首先,配置静态IP便于节点之间的连接,修改主机名便于记忆与处理(不用记那么长的IP地址),配置hosts为每个节点注册一个别名便于连接(通常设为主机名),关闭防火墙才可以ssh远程访问(每个守护节点都是通过ssh开启的),所以ssh无密登录也很重要,还要设置无密登录。
  • 其次,拷贝或下载jdk,解压并设置软链接,配置环境变量(不重启的情况下,记得source)。拷贝或下载hadoop,解压并设置软链接,配置环境变量,配置hdfs连接为localhost:9000(core-site.xml),配置副本数replication为1(hdfs-site.xml),配置JAVA_HOME(hadoop-env.sh)设置为绝对路径,修改默认的hdfs存储目录(包括默认主目录,其下的name目录、data目录)。
  • 然后,初始化hdfs文件系统。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值