linux xshell jdk hadoop(环境搭建) 虚拟机 安装(大数据搭建环境)

时间:2024-02-23 10:10:15

【hadoop是2.6.5版本  xshell是6版本 jdk是1.8.0.131 虚拟机是CentOS-6.9-x86_64-bin-DVD1.iso vmware10】

1.创建虚拟机

第一步:在VMware中创建一台新的虚拟机。如图2.2所示。

2.2

第二步:选择“自定义安装”,然后单击“下一步”按钮,如图2.3所示。

 2.3

第三步:单击“下一步” 按钮,如图2.4所示。

 2.4

第四步:选择“稍后安装操作系统”,然后单击“下一步” 按钮,如图2.5所示。

 2.5

第五步:客户机操作系统选择Linux,版本选择“CentOS 64”,然后单击“下一步” 按钮,如图2.6所示。

 2.6

第六步:在这里可以选择“修改虚拟机名称”和“虚拟机存储的物理地址”,如图2.7所示。

2.7

第七步:根据本机电脑情况给Linux虚拟机分配“处理器个数”和每个处理器的“核心数量”。注意不能超过自己电脑的核数,推荐处理数量为1,每个处理器的核心数量为1,如图2.8所示。

2.8

第八步:给Linux虚拟机分配内存。分配的内存大小不能超过自己本机的内存大小,多台运行的虚拟机的内存总合不能超过自己本机的内存大小,如图2.9所示。

2.9

第九步:使用NAT方式为客户机操作系统提供主机IP地址访问主机拨号或外部以太网网络连接,如图2.10所示。

 2.10

第十步:选择“SCSI控制器为LSI Logic(L)”,然后单击“下一步” 按钮,如图2.11所示。

2.11

第十一步:选择“虚拟磁盘类型为SCSI(S)”,然后单击“下一步” 按钮,如图2.12所示。

 2.12

第十二步:选择“创建新虚拟磁盘”,然后单击“下一步” 按钮,如图2.13所示。

 2.13

第十三步:根据本机的磁盘大小给Linux虚拟机分配磁盘,并选择“将虚拟机磁盘拆分为多个文件”,然后单击“下一步”按钮,如图2.14所示。

2.14

第十四步:根据需要修改存储磁盘文件的位置。如果不更改,默认存储在Linux虚拟机安装文件目录,如图2.15所示。

2.15

第十五步:单击“完成”按钮,完成新虚拟机向导,如图2.16所示。

 2.16

第十六步:在虚拟机名字上单击鼠标右键,选择“设置”来设置安装的ISO文件。选择“CD/DVD à 使用ISO镜像文件”,选择自己的镜像文件,然后单击“确定”按钮,如图2.17所示。

 2.17

第十七步:开启设置好的虚拟机,进行Linux虚拟机安装,如图2.18所示。

 2.18

第十八步:选择“不再显示此消息”,然后单击“取消” 按钮。

第十九步:进入到VMware虚拟机选择“Instell or upgrade an existing system”单击“回车” 键进行安装。或者不作任何操作,它将倒计时90秒后自动安装。进入到VMware后可以用“Ctrl+Alt”组合键退出VMware,如图2.19所示。

 2.19

第二十步:进入到安装前测试页面,通过方向键选择“Skip”按钮跳过测试,如图2.20所示。

 2.20

第二十一步:用鼠标单击“Next” 按钮进行下一步操作,如图2.21所示。

 2.21

第二十二步:用鼠标选择“中文简体”,然后单击“下一步”按钮,如图2.22所示。

 

 

 

 

 

 

 

 

 图2.22

第二十三步:键盘选择“美国英语式,然后单击“下一步” 按钮,如图2.23所示。

 

 

 

 

 

 

 

图2.23

 

第二十四步:选择“基本存储设备”,然后单击“下一步” 按钮,如图2.24所示。

 

 

 

 

 

 

图2.24

第二十五步:单击“忽略所有数据” 按钮,如图2.25所示。

 2.25

 

第二十六步:设置Linux虚拟机的“主本名”,然后单击“下一步” 按钮,如图2.26所示。

 2.26

第二十七步:设置时间区域,勾选系统使用UTC时间,然后单击“下一步”按钮,如图2.27所示。

2.27

第二十八步:设置管理员用户root的密码,如图2.28所示。(统一使用123456)

2.28

第二十九步:选择“使用所有空间”,然后单击“下一步”按钮,如图2.29所示。

 2.29 

第三十步:单击“将修改写入磁盘”按钮,如图2.30所示。

2.30 

第三十一步:选择Minimal,然后单击“下一步” 按钮。这里安装的是纯命令行版,也可以安装桌面版,可以选择Desktop或者Minimal Desktop,如图2.31所示。

 

2.31

 

第三十二步:进行安装界面,这里一共需要安装332个软件包,如图2.32所示。

 2.32 

第三十三步:单击“重新引导” 按钮,完成安装,如图2.33所示。

 

 2.33

 

第三十四步:测试安装是否成功。输入用户root和用户密码,如果能进入到如下界面,说明安装成功,如图2.34所示。

2.34

[root@localhost ~]#

root:是登录到Linux系统的用户名。

localhost:是Linux系统的主机名。

~:是root用户所在的位置。“~”是表示root的家目录,root家目录实际路径是/home/root。

 

2.linux虚拟机 安装JDK和Hadoop

为在生产环境中hadoop大数据集群是由多台服务器组成的集群,为了方便学习这里采用在VMware平台中搭建虚拟机的方式模拟hadoop大数据集群。若要想实现hadoop大数据集群环境,至少需要4台虚拟机,其中1台Master节点,3台Slave节点,每台节点配置环境。为了实现hadoop集群须有一台Master节点和多台Slave节点(其中IP地址第三段“153”需要跟自己的VMware工具平台网段一致,可以通过在VMware工作平台中单击“编辑-->虚拟网络编辑器-->VMware8-->子网”来查看)。

 

 

 

具体配置如表5.1所示。

5.1 集群节点信息

主机名

IP地址

Master001

192.168.153.200

Slave001

192.168.153.201

Slave002

192.168.153.202

Slave003

192.168.153.203

1. 基础信息配置。

首先在一台虚拟机中设置基础信息,假设这台虚拟机为Master001。在基础信息中需要设置主机名、IP地址和名称解析等配置,这些配置文件只有root用户才有改写权限,所以需要使用root用户登录来编写这些配置文件。

1)修改主机名

通过编辑network文件,将HOSTNAME值修改为新的主机名,具体操作如下。

[root@localhost ~]# vi /etc/sysconfig/network

改写:

HOSTNAME=Master001

2)设置静态IP

通过编辑ifcfg-eth0文件来设置IP地址,具体操作如下。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

改写:

ONBOOT=yes

BOOTPROTO=static

插入:

IPADDR=192.168.153.200

NETMASK=255.255.255.0

GATEWAY=192.168.153.2

DNS1=192.168.153.2

 

3)设置hosts

hosts文件是Linux系统中负责IP地址与域名快速解析的文件,需要配置其它的几个节点的主机名和IP来快速访问集群中的其它节点。

具体操作如下:

[root@localhost ~]# vi  /etc/hosts

插入:

192.168.153.200 Master001

192.168.153.201 Slave001

192.168.153.202 Slave002

192.168.153.203 Slave003

4)使设置生效

只是修改IP地址可以重启网络服务即可以生效,操作如下:

[root@localhost ~]# service network restart

如果修改了主机名,必须重启虚拟机才能生效,操作如下:

[root@localhost ~]# reboot

5)验证设置是否成功

启动成功后信息栏从“[root@localhost ~]#”变成了“[root@Master001 ~]#”,这时主机名修改成功。

验证IP地址设置是否成功可以通过ifconfig命令查看IP地址,如果出现“eth0”网络名称和IP地址,说明静态IP设置成功,这时可以使用ping命令进一步验证是否能联通内网。,具体操作如下:

[root@Master001 ~]# ifconfig

eth0 Link encap:Ethernet  HWaddr 00:0C:29:45:78:7B  

inet addr:192.168.153.101  Bcast:192.168.153.255  Mask:255.255.255.0

......

RX bytes:8610 (8.4 KiB)  TX bytes:9849 (9.6 KiB)

 

lo Link encap:Local Loopback  

net addr:127.0.0.1  Mask:255.0.0.0

......

RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

[root@Master001 ~]# ping 192.168.153.1 (此处的153 应改为你们 NAT 模式下子网的第三段)

PING 192.168.153.1 (192.168.153.1) 56(84) bytes of data.

64 bytes from 192.168.153.1: icmp_seq=1 ttl=128 time=0.450 ms

......

64 bytes from 192.168.153.1: icmp_seq=4 ttl=128 time=0.522 ms

^C

--- 192.168.153.1 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 4019ms

rtt min/avg/max/mdev = 0.450/0.501/0.572/0.055 ms

验证外网是否联通。VMware平台中的虚拟是通过与虚拟机共享主机的IP地址来访问外网,虚拟机要连接网络必须保证宿主机能够正常访问网络,虚拟机是否能访问外网可以通过“ping www.baidu.com”命令来验证,如果能ping通百度说明外网访问成功。

[root@Master001 ~]# ping www.baidu.com

PING www.baidu.com (180.97.33.107) 56(84) bytes of data.

64 bytes from 180.97.33.107: icmp_seq=1 ttl=128 time=36.2 ms

......

64 bytes from 180.97.33.107: icmp_seq=6 ttl=128 time=41.2 ms

^C

--- www.baidu.com ping statistics ---

6 packets transmitted, 6 received, 0% packet loss, time 5729ms

rtt min/avg/max/mdev = 36.278/38.147/41.229/1.858 ms

6)创建普通用户

计算机的操作难免会有失误,如果关于内核的操作不当,就会对系统造成重大破坏,如一些工具不能使用,系统无法启动等等。为了减少误操作对系统造成的伤害,出于安全性需要建立普通用户。

1)创建用户名叫hadoop的用户。

[root@Master001 ~]# adduser hadoop

2)给hadoop用户指定密码(密码:123456)。

[root@Master001 ~]# passwd hadoop

更改用户 hadoop 的密码。

新的 密码:

无效的密码: 过于简单化/系统化

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

3)验证用户是否创建成功,如果能成功切换表示用户创建成功。

[root@Master001 ~]# su hadoop

[hadoop@Master001 ~]#

7)安装Xshell

XShell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行。可以把XShell理解为一个客户端,可以通过这个客户端来远程操作Linux系统,就像用Navicat去连接MySQL服务器一样,可以远程操作MySQL数据库。

3. 安装XShell上传文件

1.安装

1)在安装文件目录中找到Xme4.exe文件,并双击安装Xme4.exe。

2)勾选同意,单击“下一步”按钮,如图2.35所示。

 2.35

3)输入名字、公司和密钥,单击“下一步”按钮,如图2.36所示。

 

 Product Key:101210-450789-147200

                       图2.36 

4)修改安装地址,单击“下一步”按钮,如图2.37所示。

2.37 

5)选择经典安装模式,单击“下一步”按钮,如图2.38所示。

2.38

 

6)以后操作均为默认选项,当出现“安装成功”后单击“完成”按钮即可。

3. 连接XSHell

1)双击XShell图标,单击“新建连接”按钮,打开XShell终端,如图2.39所示。

2.39

2)配置需要连接的虚拟机IP地址、用户名和密码。

这里使用hadoop用户登录,连接成功后将进入到hadoop用户家目录,如果是root用户登录连接成功将进入root用户家目录,如图2.40、2.41所示。

(主机号应为你所配置的虚拟机IP(即IPADDR 后所写网段) 可在虚拟机中使用 ifconfig命令查看)

2.40

 2.41

3)选择连接XShell,如果信息栏出现“[hadoop@Master001 ~]$”表示连接成功。

4)切换到家里目录,在家目录下创建一个名字叫software的文件夹,用于管理安装文件。

[hadoop@Master001 ~]$ cd ~

[hadoop@Master001 ~]$ mkdir software

5)进入到softeware目录。

[hadoop@Master001 ~]$ cd software

[hadoop@Master001 software]$

4. 利用Xftp工具上传文件

1)XShell工具中自带Xftp工具快捷键,可以利用Xftp快捷键进入到Xftp工具中,Xftp工具可以从XShell工作界面,单击“Xftp快捷键”按钮登录,登录的用户与XShell登录的用户为同一用户。如图2.42所示。也可以单独通过双击Xftp工具输入IP地址、用户名和密码单独登录。

如果使用XShell快捷方式登录,用户登录上传的哪个文件权限将属于该用户也是经常失误的地方。

 2.42

2)图5.11中,左边界面是宿主机中的界面,右边界面是虚拟机中的界面,下面界面是传输数据的进度条界面。可以在宿主机中找到要上传的文件,通过双击或者拖拽的方式将文件上传到虚拟机中;也可以在虚拟机中拖拽文件到宿主机中下载文件,通过XShell快捷方式登录到Xftp工具。虚拟机界面中目录位置是登录之前的位置,如果这个位置不是想要的位置,可在Xftp中通过选择栏进行选择。

hadoop-2.6.5.tar.gz和jdk-8u131-linux-x64.tar.gz安装包文件上传到虚拟机software文件夹中,如图2.43所示。

 2.43

4. 安装JDK

1)在XShell中输入ls命令可以查看Xftp上传的文件内容,通过tar命令解压jdk-8u131-linux-x64.tar.gz压缩文件,操作如下:

[hadoop@Master001 software]$ ls

jdk-8u131-linux-x64.tar.gz

hadoop-2.6.5.tar.gz

 

[hadoop@Master001 software]$ tar -zxf jdk-8u131-linux-x64.tar.gz

[hadoop@Master001 software]$ ls

jdk-8u131-linux-x64.tar.gz

hadoop-2.6.5.tar.gz

jdk1.8.0_131

2)复制JDK安装目录

进入到jdk1.8.0_131目录,使用pwd命令打印jdk安装路径,利用鼠标选择复制路径。

[hadoop@Master001 software]$ cd jdk1.8.0_131/

[hadoop@Master001 jdk1.8.0_131]$ pwd

/home/hadoop/software/jdk1.8.0_131

3)配置环境变量

Linux系统中环境变量分为两种:全局变量和局部变量。profile文件是全局变量配置文件,只有管理员用户对profile文件才有写入权限,所以要编写profile文件需要切换到root用户,因为在全局变量中配置的环境变量对所有用户都有效。.bashrc文件是局部变量配置文件,在.bashrc文件配置的环境变量只对当前用户有效。

本文是配置的全局环境变量。操作如下:

[hadoop@Master001 jdk1.8.0_131]$ su root

密码:

[root@Master001 ~]# vi /etc/profile

插入(在最下面):

#java

export JAVA_HOME=/home/hadoop/software/jdk1.8.0_131

export PATH=$PATH:$JAVA_HOME/bin

4)使用环境变量生效

[root@Master001 ~]# source /etc/profile

 

5)验证JDK是否安装成功

输入java或者java -version,如果出现java命令的详细说明或者出现JDK版本号,表示安装成功,如果出现“-bash: dddd: command not found”表示安装失败。

6. 安装hadoop

1)切换到hadoop用户,并进入到software目录,使用ls命令可以查看Xftp上传的文件内容,通过tar命令解压hadoop-2.6.5.tar.gz压缩文件。操作如下:

[root@Master001 ~]# su hadoop

[hadoop@Master001 ~]$ cd software/

[hadoop@Master001 software]$ ls

jdk-8u131-linux-x64.tar.gz   jdk1.8.0_131

hadoop-2.6.5.tar.gz

[hadoop@Master001 software]$ tar -zxf hadoop-2.6.5.tar.gz

[hadoop@Master001 software]$ ls

jdk-8u131-linux-x64.tar.gz   jdk1.8.0_131

hadoop-2.6.5.tar.gz hadoop-2.6.5

2)进入hadoop安装目录

进入到hadoop-2.6.5目录,使用pwd命令打印hadoop安装路径,利用鼠标选择复制路径。

[hadoop@Master001 software]$ cd hadoop-2.6.5

[hadoop@Master001 hadoop-2.6.5]$ pwd

/home/hadoop/software/hadoop-2.6.5

3)配置hadoop环境变量

切换到root用户,编辑profile文件,并插入hadoop配置文件。操作如下:

[hadoop@Master001 hadoop-2.6.5]$ su root

密码:

[root@Master001 ~]# vi /etc/profile

插入:

#hadoop

export HADOOP_HOME=/home/hadoop/software/hadoop-2.6.5

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

4)使环境变量生效

[root@Master001 ~]# source /etc/profile

5)验证hadoop安装是否成功

输入hadoop命令,如果出现hadoop命令相关的详细信息,表示安装成功;如果出现“-bash: dddd: command not found”,表示安装失败。

6)配置core-site.xml文件

关于Hadoop配置文件的讲解视频可扫描二维码观看。【配置Hadoop文件】

切换到hadoop用户,进入到hadoop-2.6.5/etc/hadoop/目录,编辑core-site.xml文件。

[root@Master001 ~]# su hadoop

[hadoop@Master001 ~]$ cd software/hadoop-2.6.5/etc/hadoop/

[hadoop@Master001 hadoop]$ ls

core-site.xml mapred-site.xml salves

hadoop-env.cmd   hdfs-site.xml yarn-site.xml

......

[hadoop@Master001 hadoop]$ vi core-site.xml

插入:

<configuration>

<!--指定HDFS存储入口-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://Master001:9000</value>

</property>

 

<!--指定hadoop临时目录-->

<property>

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

<value>/home/hadoop/software/hadoop-2.6.5/tmp</value>

</property>

</configuration>

7)配置hadoop-env.sh文件

编辑hadoop-env.sh文件,修改java_home地址,java_home地址是解压的jdk地址,配置java_home是为了使用java的现实。

修改:

# The java implementation to use.

export JAVA_HOME=/home/hadoop/software/jdk1.8.0_131

8)配置hdfs-site.xml文件

hdfs-site.xml文件是hadoop2.0以后版本的必备配置文件之一,可以在hdfs-site.xml配置集群名字空间、访问端口、URL地址、故障转移等配置。

[hadoop@Master001 hadoop]# vi hdfs-site.xml

插入:

<configuration>

<!--配置数据备份数-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!--设置secondaryNamenode运行的节点-->

        <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>Slave002:50070</value>

        </property>

</configuration>

9)配置mapred-site.xml文件

hadoop包里是没有mapred-site.xml文件,需要通过mapred-site.xml.template模版文件复制出mapred-site.xml文件。操作如下:

[hadoop@Master001 hadoop]# cp mapred-site.xml.template mapred-site.xml

[hadoop@Master001 hadoop]# vi mapred-site.xml

插入:

<configuration>

<!--设置jar程序启动Runner类的main方法运行在yarn集群中-->

<property>

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

<value>yarn</value>

</property>

</configuration>

10)配置slaves文件

hadoop集群中所有的datanode节点都需要写入到slaves文件中,因为它是用来指定存储数据的节点文件,Master会读取salves文件来获取存储信息,根据slaves文件来做资源平衡。

注意:

1)slaves文件名全部是小写,有很多初学者使用vi Slaves来编辑slaves文件,它将会在hadoop目录中重新创建一个首字母为大写的slaves文件,这样是错误的;

2)slaves文件打开后里面有一个“localhost”,这个localhost需要把删除,如果没有删除集群会把Master也当做DataNode节点,这样会造成Master节点负载过重。

[hadoop@Master001 hadoop]# vi slaves

删除:

localhost

插入:

Slave001

Slave002

Slave003

11)配置yarn-site.xml

yarn-site.xml文件是ResourceManager进程相关配置参数。

[hadoop@Master001 hadoop]# vi yarn-site.xml

插入:

<configuration>

<!--设置对外暴露的访问地址为Master001-->

<property>

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

<value>Master001</value>

</property>

 

<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->

<property>

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

<value>mapreduce_shuffle</value>

</property>

</configuration>

6. 安装ssh

ssh是一种远程传输通信协,用于两台或多台节点之间数据传输。通过yum方式在线安装ssh,yum是在线安装工具,因此使用yum安装时必须连接网络。yum是一个Shell前端软件包管理器,它能够从yum服务器自动下载rpm包然后安装,一次安装完成所有需要的软件包,不必一次次的下载,非常的简单方便。

1)yum工具属于root用户工具,所以需要切换到root用户进行在线安装。

[hadoop@Master001 hadoop]$ su root

密码:

[root@Master001 ~]#

2)在安装ssh之前需要先查找yum库有哪些ssh软件的rpm包。

[root@Master001 ~]# yum list | grep ssh

openssh.x86_64 5.3p1-84.1.el6 updates

openssh-server.x86_64 5.3p1-123.el6_9 updates

openssh-clients.x86_64 5.3p1-123.el6_9 updates

......

3)使用yum工具在线安装server和clients软件。

[root@Master001 ~]# yum install -y openssh-clients.x86_64

[root@Master001 ~]# yum install -y openssh-server.x86_64

安装过程如图2.44所示。

2.44

4)验证ssh是否安装成功

验证方法一:输入ssh命令,如果出现ssh命令的详细信息表示安装成功,如果出现" -bash: dddd: command not found"则表示安装失败。

[root@Master001 ~]# ssh

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]

           [-D [bind_address:]port] [-e escape_char] [-F configfile]

           [-I pkcs11] [-i identity_file]

           [-L [bind_address:]port:host:hostport]

           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

           [-R [bind_address:]port:host:hostport] [-S ctl_path]

           [-W host:port] [-w local_tun[:remote_tun]]

           [user@]hostname [command]

验证方法二:使用rpm工具验证。输入rpm -qa | grep ssh命令查找已经安装的ssh相关程序,如果出现server和clients表示安装成功。

[root@Master001 ~]# rpm -qa | grep ssh

openssh-server-5.3p1-123.el6_9.x86_64

openssh-clients-5.3p1-123.el6_9.x86_64

libssh2-1.4.2-1.el6.x86_64

openssh-5.3p1-123.el6_9.x86_64

7 复制虚拟机

现在已经安装好一台节点虚拟机的配置,其它四台节点虚拟机可以通过复制的方式来安装,但在复制虚拟机之前需要先把虚拟机关机。

1. 关闭虚拟机(halt命令需要root权限)

[root@Master001 ~]# halt

2. 复制虚拟机

复制出另它四台虚拟机,并把复制的文件夹重新命名为Master001、Slave001、Slave002、Slave003方便管理,如图2.45所示。

2.45

3. 打开虚拟机

1)通过“文件-->打开”选择复制的虚拟机来打开虚拟机。为了方便管理需将虚拟名字修改为文件夹名称,如图2.46所示。

 2.46

2)启动虚拟机

单击左边虚拟机名称,待右边出现对应的界面后,单击“开启此虚拟机”按钮打开虚拟机,如图2.47所示。

 2.47

3)选择“我已复制该虚拟机”

每一台计算机都有一个唯一的MAC地址,虚拟机也是一样。虽然它是虚拟状态的,但它同样有内存、处理器、硬盘和MAC地址等。虚拟机是通过复制出另一台一模一样的虚拟机,包括MAC地址,所以需要在启动副本虚拟机时选择“我已复制该虚拟机”按钮来告诉VMware平台“我这台虚拟机需要重新生成一个新的MAC地址”。如果选择“我已移动该虚拟机”按钮,VMware平台将不会为新虚拟机生成新的MAC地址,如图2.48所示。

2.48

4. 修改虚拟配置

1)查看MAC地址

修改MAC地址之前需要到70-persistent-net.reles文件去查看最新的MAC地址,最后的一条为最新的MAC地址,并记住ATTR和NAME的值,如图2.49所示。

[root@Master001 ~]# cat /etc/udev/rules.d/70-persistent-net.rules

 2.49

 

2)修改MAC地址和IP地址

需要到profile文件中修改最新的MAC地址和网络名称,按之前约定的配置规则来修改IP地址,如图2.50所示。

[root@Master001 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

改写:

2.50

3)修改主机名

按之前约定的配置规则来修改主机名。

[root@Master001 ~]# vi /etc/sysconfig/network

改写:

HOSTNAME=Slave003

4)使修改生效

如果只是修改profile文件,可以重启网络服务即可使修改生效。如果修改主机名,需要重启虚拟机才能生效。

[root@Master001 ~]# reboot

5)验证修改是否成功

如果登录主机名变成修改的主机名表示主机名修改成功,如图2.51所示。

2.51

输入用户名和密码登录后,输入ifconfig命令,如果出现修改后的网络名称和IP地址表示静态IP修改成功,如图2.52所示。

 2.52

5. 修改其它虚拟机

依次操作“5.2.3.2小节、复制虚拟机”修改其它几台虚拟机,当所有虚拟机都修改完成后可以互相ping IP地址或主机名来验证内网是否联通。

[hadoop@Slave003 ~]$ ping 192.168.153.101

PING 192.168.153.101 (192.168.153.101) 56(84) bytes of data.

64 bytes from 192.168.153.101: icmp_seq=1 ttl=64 time=0.797 ms

64 bytes from 192.168.153.101: icmp_seq=2 ttl=64 time=0.774 ms

^C

--- 192.168.153.101 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1876ms

rtt min/avg/max/mdev = 0.774/0.785/0.797/0.030 ms

[hadoop@Slave003 ~]$ ping Master001

PING Master001 (192.168.153.101) 56(84) bytes of data.

64 bytes from Master001 (192.168.153.101): icmp_seq=1 ttl=64 time=1.69 ms

64 bytes from Master001 (192.168.153.101): icmp_seq=2 ttl=64 time=0.703 ms

^C

--- Master001 ping statistics ---

2 packets transmitted, 3 received, 0% packet loss, time 2391ms

rtt min/avg/max/mdev = 0.703/1.061/1.697/0.452 ms

2.5 设置SSH免密

安装Hadoop之前,由于集群中大量主机进行分布式计算需要相互进行数据通信,服务器之间的连接需要通过ssh来进行,所以要安装ssh服务。默认情况下通过ssh登录服务器需要输入用户名和密码进行连接,如果不配置免密码登录,每次启动hadoop都要输入密码用来访问每台机器的DataNode,因为Hadoop集群都有上百或者上千台机器,靠人力输入密码工程耗大,所以一般都会配置ssh的免密码登录。在hadoop集群中Master节点需要对所有节点进行访问,了解每个节点的健康状态,所以只需要对Master做免密设置,该集群是高可用集群,有两个Master。这两个Master都需要生成自己的私密,然后对所有节点(包括自己)传输密钥,以Master001为例,Master002只需要执行Master001相同操作即可。具体操作如下。

1. 生成密钥

密钥就像是进入一扇门的钥匙,生成密钥就是生成这把钥匙。由于要对hadoop用户进行免密设置,所以需要切换到hadoop用户,并回到该用户的家目录。

执行ssh-keygen -t rsa -P \'\' 命令后将在/home/hadoop/.ssh/目录下以rsa方式生成id_rsa的密钥。

[hadoop@Master001 ~]$ cd ~

[hadoop@Master001 ~]$ ssh-keygen -t rsa -P \'\'

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): (出现此段后按enter继续)

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:

2c:a9:91:36:4b:18:e6:09:60:f9:1a:22:23:3b:d6:af hadoop@Master001

The key\'s randomart image is:

+-------[ RSA 2048]-----+

|...             |

|o.          |

|. + |

|== = . o |

|+oB * o S |

|oo + = . |

|..  +   |

|     . |

|   E.   |

+-----------------------+

2. 对所有节点进行免密

将密钥分发给集群中所有节点(包括自己),就免去输入密码去访问其它虚拟机。执行ssh-copy-id命令后,会将id_rsa中的密钥传输到目标虚拟机的/home/hadoop/.ssh/authorized_keys文件中。

[hadoop@Master001 ~]$ ssh-copy-id Master001

hadoop@master001\'s password:(输入Master001密码) 

Now try logging into the machine, with "ssh \'Master001\'", and check in:

  .ssh/authorized_keys

to make sure we haven\'t added extra keys that you weren\'t expecting.

[hadoop@Master001 ~]$ ssh-copy-id Slave001

hadoop@slave001\'s password: (输入Slave001密码)

Now try logging into the machine, with "ssh \'Slave001\'", and check in:

.ssh/authorized_keys

to make sure we haven\'t added extra keys that you weren\'t expecting.

 [hadoop@Master001 ~]$ ssh-copy-id Slave002

hadoop@slave002\'s password: (输入Slave002密码)

Now try logging into the machine, with "ssh \'Slave002\'", and check in:

.ssh/authorized_keys

to make sure we haven\'t added extra keys that you weren\'t expecting.

 [hadoop@Master001 ~]$ ssh-copy-id Slave003

hadoop@slave003\'s password: (输入Slave003密码)

Now try logging into the machine, with "ssh \'Slave003\'", and check in:

.ssh/authorized_keys

to make sure we haven\'t added extra keys that you weren\'t expecting.

3. 验证免密设置是否成功

验证免密是免密设置最关键的一步,如果不输入密码就能访问到目标虚拟机,表示免密设置成功。

[hadoop@Master001 ~]$ ssh Master001

Last login: Tue Dec 19 14:44:02 2017 from 192.168.153.1

[hadoop@Master001 ~]$ exit

logout

Connection to Master001 closed.

 [hadoop@Master001 ~]$ ssh Slave001

Last login: Fri Dec 15 08:38:54 2017 from 192.168.153.1

[hadoop@Slave001 ~]$ exit

logout

Connection to Slave001 closed.

[hadoop@Master001 ~]$ ssh Slave002

Last login: Fri Dec 15 08:38:56 2017 from 192.168.153.1

[hadoop@Slave002 ~]$ exit

logout

Connection to Slave002 closed.

[hadoop@Master001 ~]$ ssh Slave003

Last login: Tue Dec 19 14:44:05 2017 from 192.168.153.1

[hadoop@Slave003 ~]$ exit

logout

Connection to Slave003 closed.

[hadoop@Master001 ~]$

2.6 启动Hadoop集群

1. 在Master001中格式化namenode

Master001中格式化namenode会生成~/software/hadoop-2.6.5/tmp目录,该目录中存放版本号和元数据等相关信息。

[hadoop@Master001 ~]$ hdfs namenode -format

2. 传送tmp文件到其它节点

[hadoop@Master001 ~]$ cd ~/software/hadoop-2.6.5/

[hadoop@Master001 hadoop-2.6.5]$ ls

bin   etc  ...   sbin   share  tmp

[hadoop@Master001 hadoop-2.6.5]$ scp  -r  tmp/  Slave001:~/software/hadoop-2.6.5/

[hadoop@Master001 hadoop-2.6.5]$ scp  -r  tmp/  Slave002:~/software/hadoop-2.6.5/

[hadoop@Master001 hadoop-2.6.5]$ scp  -r  tmp/  Slave003:~/software/hadoop-2.6.5/

3. 启动hdfs

启动hdfs只需要在Master001中执行start-dfs.sh 即可。它分别会在Master001启动namenode进程,在Slave001、Slave002和Slave003中启动datanode进程。

[hadoop@Master001 ~]$ start-dfs.sh 

Starting namenodes on [Master001]

Master001: starting namenode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-namenode-Master001.out

Slave002: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave002.out

Slave003: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave003.out

Slave001: starting datanode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-datanode-Slave001.out

Starting journal nodes [Slave001 Slave002 Slave003]

Slave003: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave003.out

Slave001: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave001.out

Slave002: starting journalnode, logging to /home/hadoop/software/hadoop-2.6.5/logs/hadoop-hadoop-journalnode-Slave002.out

4. 启动MapReduce

启动MapReduce只需要在Master001中执行start-yarn.sh 即可。它分别会在Master001启动resourcemanager进程,在Slave001、Slave002和Slave003中启动nodemanager进程。

[hadoop@Master001 ~]$ start-yarn.sh 

starting yarn daemons

starting resourcemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-resourcemanager-Master001.out

Slave003: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave003.out

Slave001: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave001.out

Slave002: starting nodemanager, logging to /home/hadoop/software/hadoop-2.6.5/logs/yarn-hadoop-nodemanager-Slave002.out

4. 验证集群是否成功启动

当集群启动成功后每个节点中都有一些必须存在的进程。具体进程如下:

[hadoop@Master001 ~]$ jps

3766 Jps

3510 ResourceManager

3118 NameNode

[hadoop@Slave001 ~]$ jps

2610 NodeManager

2500 DateNode

2745 Jps

[hadoop@Slave002 ~]$ jps

2675 Jps

2549 NodeManager

2439 DateNode

2297 SencodaryManager

[hadoop@Slave003 ~]$ jps

2737 Jps

2611 NodeManager

2501 DateNode