hadoop集群安装配置

环境:centos7+hadoop2.7.7+jdk1.8.0_201

文章下边用到的用户名,路径名,需要根据自己的情况修改,本人在系统的用户名是cxm,两台虚拟机的名字是master和slave1;

我有参考其他的文章,有些名字,路径没有改过来,需要读者按自己的情况改;

本篇文章没有一步一步地演示结果,有些步骤可能要思考一下。

一.centos 虚拟机安装

安装界面要对 网络进行开启,选择环境(最小安装等等),选择基本环境时候,不要选minimal,选了就只有文本界面,可以选择gnome界面那个环境,所有的设置都过一遍。

输入了虚拟机名 HadoopMaster

超级用户密码:123

usr:cxm

password:123

 

对 / 目录文件的写操作都要用root用户: su root , 退出: exit

鼠标被虚拟机吃了:CTRL+ALT

网络连接在VMware那里设置用NAT模式

 

网络问题

​ 我的主机有3个适配器,一个是虚拟机的适配器,一个是wifi的适配器,一个是网卡的适配器,分别对应三个ip地址(网卡没有连所以没有IP地址,即2个IP),表明我的主机所属于的网段,也就是我的主机可以属于多个网段,同网段存在的ip是可以相互ping通的。

​ 我连wifi后的ip是172.17.149.93,该ip是与外网连通的;我虚拟机适配器的ip是192.168.126.1,所以我创建的虚拟机ip要和192.168.126.1同网段,而我主机的两个ip是可以ping通的,那么我创建的虚拟机就能够ping通外网。

 

报错:连接网络一连就断开

原因:可能是我第一次安装的时候,在安装界面没有选择配置好网络ip等;这次安装只选择了gnome环境的安装,第一次可以ping通外网,后边我有设置成静态ip。在我没有修改虚拟机的网卡配置的时候,可能ip是动态的,所以可以ping通外网。而我修改网卡配置,设置ip为静态的时候,我设置成192.168.64.100,和我的虚拟机适配器不同网段,所以ping不通,也连接不上网络,网络可能指的是网段。

 

报错:两台虚拟机不能ping通

原因:一开始是有一台连不上网络,是该机ip和我虚拟机适配器的ip不同网段,所以ping不通

报错:虚拟机不能ping通外网

原因:两台机器设置的网关不是和我虚拟机适配器同网段,所以ping不通。

​ 正确做法是:在VMware设置网络为nat模式(表示是同一网段的),如果一台是克隆机,要生成新的MAC地址,进入系统后,设置两台虚拟机的 ip 和 网关 与我的虚拟机适配器的ip同网段。

 

vi操作

编辑模式按 i ,退出编辑模式按ESC

退出: :q!

保存并退出: :wq

 

1.配主机名(master,slave)

su root

vi /etc/sysconfig/network

添加:(里边有多余的就删除掉)

NETWORKING=yes

HOSTNAME=master

确认生效:

hostname master

hostname

2.配置网络环境(ip)

查看enss33有没有显示ip地址,第一个:ifconfig

没有则(修改的是网卡):

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

修改:

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static //dhcp

IPADDR=192.168.126.130

NETMASK=255.255.255.0

GATEWAY=192.168.126.2 (网关显示的是192.168.126.255,和实际配置的是不同的!!!)

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

#UUID=1a367d0c-8108-4454-a71f-92147b01d30f (注释掉 )

DEVICE=ens33

ONBOOT=yes

重启网络服务:

su root

/sbin/service network restart

检查:ifconfig

3.关闭防火墙

systemctl disable firewalld

查看防火墙状态:systemctl status firewalld 或者 firewall-cmd --status

4.配置host列表

vi /etc/hosts

添加对应的IP和主机名:(里边的东西不要删除)

192.168.126.130 master

192.168.126.131 slave1

ping两台机器:

ping master

ping slave

5.安装JDK

将 JDK 文件解压, 放到/usr/java 目录下 :

cd /home/zkpk/resources/software/jdk

mkdir /usr/java

mv ~/resources/software/jdk/jdk-7u71-linux-x64.gz   /usr/java/

cd /usr/java

tar -xvf /usr/java/jdk-7u71-linux-x64.gz

配置环境变量:

vi /home/cxm/.bash_profile

添加:

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

export PATH=$JAVA_HOME/bin:$PATH

使改动生效:

source /home/cxm/.bash_profile

测试配置:

java -version

which java

6.免密钥登录配置

该部分所有的操作都要在cxm 用户下

HadoopMaster 节点 :

终端生成密钥:

ssh-keygen -t rsa

生成的密钥在.ssh 目录下,多了id_rsa和id_rsa.pub文件,密钥和公钥

 

复制公钥文件:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

修改 authorized_keys 文件的权限, 命令如下:

chmod 600 ~/.ssh/authorized_key

 

将 authorized_keys 文件复制到 slave 节点:

ssh-copy-id slave

 

HadoopSlave 节点

在终端生成密钥, 命令如下(一路点击回车生成密钥)

ssh-keygen -t rsa

 

验证免密钥登陆

说明:

1,一般只需要配置master节点到slave节点的免密码登录,反之则不需要;

2, 如果有多个slave节点,则slave节点之间 需要配置相互之间的免密码登录!!!

3,每个节点生成自己的密钥匙是必须步骤(ssh-keygen指令)

4,建议采取ssh-copy-id方法,来简化步骤

5,配置好免密码登录后,在~/.ssh目录下有多个文件,其中autorized_keys为可以免密码登录的远程用户 和其主机名的列表;

 

在 HadoopMaster 机器上执行下面的命令:

ssh slave

 

二.Hadoop 配置部署

每个节点上的 Hadoop 配置基本相同, 在 HadoopMaster 节点操作, 然后完成复制到另一个节点。 下 面所有的操作都使用cxm用户

 

复制并解压 Hadoop 安装包命令如下:

[zkpk@master ~]$ tar -xvf ~/hadoop-2.5.2.tar.gz

[zkpk@master ~]$ cd ~/hadoop-2.5.2

 

配置环境变量 hadoop-env.sh

环境变量文件中, 只需要配置 JDK 的路径。

[zkpk@master hadoop-2.5.2] gedit /home/cxm/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

在文件的靠前的部分找到下面的一行代码: export JAVA_HOME=${JAVA_HOME} 将这行代码修改为下面的代码: export JAVA_HOME=/usr/java/jdk1.8.0_201/

然后保存文件

 

配置环境变量 yarn-env.sh

环境变量文件中, 只需要配置 JDK 的路径。

[zkpk@master hadoop-2.5.2]$ gedit ~/hadoop-2.7.7/etc/hadoop/yarn-env.sh

在文件的靠前的部分找到下面的一行代码: # export JAVA_HOME=/home/y/libexec/jdk1.6.0/

将这行代码修改为下面的代码(将#号去掉):

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

然后保存文件。

 

 

配置核心组件 core-site.xml

使用 gedit 编辑:

[zkpk@master hadoop-2.5.2]$ gedit ~/hadoop-2.7.7/etc/hadoop/core-site.xml

用下面的代码替换 core-site.xml 中的内容:

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

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

<!-- Put site-specific property overrides in this file. -->

<configuration>

​ <property>

​ <name>fs.defaultFS</name>

​ <value>hdfs://master:9000</value>

​ </property>

​ <property>

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

​ <value>/home/cxm/hadoopdata</value>

​ </property>

</configuration>

 

配置文件系统 hdfs-site.xml

用下面的代码替换 hdfs-site.xml 中的内容:

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

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

<!-- Put site-specific property overrides in this file. -->

<configuration>

​ <property>

​ <name>dfs.replication</name>

​ <value>1</value>

</property>

</configuration>

 

配置文件系统 yarn-site.xml

使用 gedit 编辑:

[zkpk@master hadoop-2.5.2]$ gedit ~/hadoop-2.7.7/etc/hadoop/yarn-site.xml

用下面的代码替换 yarn-site.xml 中的内容:

<?xml version="1.0"?>

<configuration>

​ <property>

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

​ <value>mapreduce_shuffle</value>

​ </property>

​ <property>

​ <name>yarn.resourcemanager.address</name>

​ <value>master:18040</value>

​ </property>

​ <property>

​ <name>yarn.resourcemanager.scheduler.address</name>

​ <value>master:18030</value>

​ </property>

​ <property>

​ <name>yarn.resourcemanager.resource-tracker.address</name>

​ <value>master:18025</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>master:18141</value>

​ </property>

​ <property>

​ <name>yarn.resourcemanager.webapp.address</name>

<value>master:18088</value>

​ </property>

</configuration>

 

配置计算框架 mapred-site.xml

复制 mapred-site-template.xml 文件:

[zkpk@master hadoop-2.5.2]$ cp ~/hadoop-2.7.7/etc/hadoop/mapred-site.xml.template  ~/hadoop-2.7.7/etc/hadoop/mapred-site.xml

 

使用 gedit 编辑:

[zkpk@master ~]$ gedit ~/hadoop-2.7.7/etc/hadoop/mapred-site.xml

用下面的代码替换 mapred-site.xml 中的内容

<?xml version="1.0"?>

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

<configuration>

​ <property>

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

<value>yarn</value>

​ </property>

</configuration>

 

在 master 节点配置 slaves 文件

使用 gedit 编辑:

[zkpk@master hadoop-2.5.2]$ gedit ~/hadoop-2.7.7/etc/hadoop/slaves

用下面的代码替换 slaves 中的内容:

slave

注意, Hadoop3.0 下已取消 slaves 文件,改为 workers 文件。 workers 文件内容与以前 slaves 文件相同,均 为主机名(每行一个主机名 )

 

hadoop 3.0 的配置文件说明

参考其他文档

 

 

复制到从节点

使用下面的命令将已经配置完成的 Hadoop 复制到从节点 HadoopSlave 上:

[zkpk@master hadoop-2.5.2]$ cd

[zkpk@master ~]$ scp -r hadoop-2.7.7 cxm@slave1:~/

注意: 因为之前已经配置了免密钥登录, 这里可以直接远程复制。

 

三.启动 Hadoop 集群

下面所有的操作都使用 cxm用户

 

配置 Hadoop 启动的系统环境变量

该节的配置需要同时在两个节点(HadoopMaster 和 HadoopSlave) 上进行操作,操作命令如下:

[zkpk@master hadoop-2.5.2]$ cd

[zkpk@master ~]$ gedit ~/.bash_profile将下面的代码追加到.bash_profile 末尾:

#HADOOP

export HADOOP_HOME=/home/cxm/hadoop-2.7.7

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

然后执行命令:[zkpk@master ~]$ source ~/.bash_profile

 

创建数据目录

该节的配置需要同时在两个节点(HadoopMaster 和 HadoopSlave) 上进行操作。 在 zkpk 的用户主目录下, 创建数据目录, 命令如下:

[zkpk@master ~]$ mkdir /home/cxm/hadoopdata

 

启动 Hadoop 集群

格式化文件系统

格式化命令如下, 该操作需要在 HadoopMaster 节点上执行:

[zkpk@master ~]$ hdfs namenode -format

启动 Hadoop

使用 start-all.sh 启动 Hadoop 集群, 首先进入 Hadoop 安装主目录, 然后执行启动命令:

[zkpk@master ~]$ cd ~/hadoop-2.5.2

[zkpk@master hadoop-2.5.2]$ sbin/start-all.sh

执行命令后, 提示出入 yes/no 时, 输入 yes。

 

查看进程是否启动

​ 在 HadoopMaster 的终端执行 jps 命令, 在打印结果中会看到 4 个进程, 分别是 ResourceManager、 Jps、 NameNode 和 SecondaryNameNode, 如下图所示。 如果出现了这 4 个进程表示主节点进程启动成功。

​ 在 HadoopSlave 的终端执行 jps 命令, 在打印结果中会看到 3 个进程, 分别是 NodeManager、 DataNode 和 Jps, 如下图所示。 如果出现了这 3 个进程表示从节点进程启动成功。

 

Web UI 查看集群是否成功启动

​ 在 HadoopMaster 上启动 Firefox 浏览器, 在浏览器地址栏中输入输入 http://master:50070/, 检 查 namenode 和 datanode 是否正常。 UI 页面如下图所示。

​ 在 HadoopMaster 上启动 Firefox 浏览器, 在浏览器地址栏中输入输入 http://master:18088/, 检 查 Yarn 是否正常, 页面如下图所示。

 

运行 PI 实例检查集群是否成功

进入 Hadoop 安装主目录, 执行下面的命令:

[zkpk@master ~]$ cd ~/hadoop-2.7.7/share/hadoop/mapreduce/

[zkpk@master mapreduce]$ hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10

最后输出: Estimated value of Pi is 3.20000000000000000000

如果以上的 3 个验证步骤都没有问题, 说明集群正常启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值