关于大数据,一看就懂,一懂就懵.
一,概述
本文介绍如何搭建 hadoop 分布式集群环境,前面文章已经介绍了如何搭建 hadoop 单机环境和伪分布式环境,如需要,请参看: 大数据 Hadoop 学习之搭建 hadoop 平台(2.1) .hadoop 独立环境和伪分布式环境都无法发挥 hadoop 的价值,若想利用 hadoop 进行一些有价值的工作,必须搭建 hadoop 分布式集群环境.
下文以三台虚拟机为基础搭建集群环境,系统版本为 CentOS-7,虚拟机地址分别为:192.168.1.106,192.168.1.109,192.168.1.110
二,修改主机名
编辑 network 文件,文件位于 / etc/sysconfig 路径下,若文件为空则添加如下内容,如不为空,则修改:HOSTNAME=namenode,namenode 为修改的主机名.
NETWORKING=yes
HOSTNAME=namenode
View Code
修改 192.168.1.106 的主机名为 namenode,192.168.1.109 的主机名为 datanode01,192.168.1.110 的主机名为 datanode02.修改后键入命令 hostname 验证是否修改成功,如在 192.168.1.106 上键入 hostname 后出现 namenode 则表示修改成功,如下图所示:
三,修改 hosts
修改 hosts 是为了配置前面修改的主机名和 IP 的映射关系.hosts 文件位于 / etc 路径下,三台虚拟机都需要添加如下内容:
192.168.1.106 namenode
192.168.1.109 datanode01
192.168.1.110 datanode02
修改 hosts
修改后效果如图所示:
四,关闭防火墙(三台机器均需关闭)
1,查看防火墙状态
firewall-cmd --state
查看防火墙状态
如下则表示防火墙处于开启状态:
2,关闭防火墙
systemctl stop firewalld.service
临时关闭防火墙
再通过 service iptables status 查看防火墙状态,如下则表示防火墙已经关闭:
但是,这仅仅是在当前状态下关闭防火墙,系统重启后防火墙仍然会自动开启,所以需要禁止开机启动防火墙
systemctl disable firewalld.service
禁止开机启动防火墙
执行命令后重启系统生效.
五,关闭 selinux(三台机器均需关闭)
selinux 是一个防护程序,类似于防火墙.编辑 selinux 文件,文件位于:/etc/sysconfig 路径下
修改 SELINUX=enforcing 为 SELINUX=disabled,修改后效果如下:
六,ssh 免密码登录设置
hadoop 集群模式下,各主机之间需要互相通信,比如上传文件到 HDFS 文件系统上时,都需要对文件进行备份.所以需要各机器之间能够进行免密码登录.
1,生成秘钥:输入命令:ssh-keygen -t rsa,按 3 次回车之后会生成秘钥.
2,拷贝秘钥到本机和其他两台机器上:分别执行命令: ssh-copy-id 192.168.1.109,ssh-copy-id 192.168.1.110 拷贝秘钥.
3,免密码登录验证:执行命令 ssh 192.168.1.109,如果不需要输入密码就能登录到 109 机器上,则免密码登录设置成功,110 也执行相同的测试.
七,安装 JDK 并配置环境变量(三台机器均需要做相同的设置)
1,创建目录 / home/software, 上传 JDK 到该目录下并解压,此处使用的 JDK 版本是 jdk1.8.0_131
2,配置环境变量:编辑文件 profile,文件位于:/etc 目录下,在文件尾部添加如下内容:
export JAVA_HOME=/home/software/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin
配置 java 环境变量
如图所示:
3,输入命令 source /etc/profile 是文件立即生效
4,测试:在任意路径下输入命令:java -version,若打印出 java 的版本信息,则代表 java 安装成功.如下所示:
八,安装 hadoop 集群
1,下载 hadoop 安装包
下载地址: https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/ ,这是 hadoop-2.7.3 的项目存档地址.随着 Apache 各项目的版本更新,各项目的网站上只上架最新版本和近期历史重要版本,如果网站下架的项目,需要到 Apache 存档地址上寻找,该地址是: https://archive.apache.org/dist/ ,hadoop 存档地址是: https://archive.apache.org/dist/hadoop/ .在 hadoop2.7.3 版本的地址下,下载 hadoop-2.7.3.tar.gz 文件包.如下图所示:
2,安装 hadoop 并配置环境变量
①,上传 hadoop 安装包 hadoop-2.7.3.tar.gz 到 / home/software 目录下并解压,当然,也可以放在其他目录下.
②,编辑文件 profile,文件位于 / etc 目录下,添加如下代码:
export HADOOP_HOME=/home/software/hadoop-2.7.3
配置 hadoop 环境变量
并在 PATH 变量后追加如下代码:
$HADOOP_HOME/bin:$HADOOP_HOME/sbin
追加 PATH 变量
输入命令 source /etc/profile 使 profile 配置文件立即生效.最终 profile 文件效果如下所示:
③,验证 hadoop 环境变量是否配置成功:在任何路径下输入命令 hadoop,如果打印相关信息,则代表 hadoop 的安装和环境变量配置成功,如下图所示:
至此,hadoop 安装和配置环境变量成功,但是,这仅仅是进行了基础的安装,还需要进行一些配置,使 hadoop 能真正的工作.
以上第八小节的操作,在一台机器上(我使用 namenode 机器)配置即可,其他两台机器只需要按第②,③点编辑 profile 文件,因为在接下来的内容中会接着配置 hadoop,全部配置完成后,把 hadoop-2.7.3 文件拷贝到其他机器即可.
九,hadoop 配置
1,修改 hadoop-env.sh 文件,文件位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下.
修改 java_home,找到代码 export JAVA_HOME=${JAVA_HOME} ,修改为 JAVA_HOME 的值,即:export JAVA_HOME=/home/software/jdk1.8.0_131
2,修改 core-site.xml 文件,文件同样位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下.
找到节点,在该节点下添加如下代码:
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.106:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.3/data/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
修改 core-site.xml
修改后效果如下:
3, 修改 hdfs-site.xml 文件,文件同样位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下.
找到节点,在该节点下添加如下代码:
<property>
<!-- 设置备份数为3份 -->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!-- 关闭HDFS权限 -->
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<!-- 设置namenode http访问地址 -->
<name>dfs.namenode.http-address</name>
<value>192.168.1.106:50070</value>
</property>
<property>
<!-- 设置secondarynamenode http访问地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.110:50090</value>
</property>
修改 hdfs-site.xm
修改后效果如下:
4,修改 mapred-site.xml 文件,文件同样位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下,但是该路径下并不存在 mapred-site.xml 文件,只存在 mapred-site.xml.template 文件,将 mapred-site.xml.template 文件修改为 mapred-site.xml 即可.
找到 <configuration> 节点,在该节点下添加如下代码:
<property>
<!-- 指定mapreduce使用yarn框架来调度 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!-- 指定jobhistory地址 -->
<name>mapreduce.jobhistory.address</name>
<value>192.168.1.106:10020</value>
</property>
<property>
<!-- 指定jobhistorywebapp地址 -->
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.1.106:19888</value>
</property>
<property>
<!-- 开启uber模式 -->
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
修改 mapred-site.xm
修改后效果如下:
5,修改 yarn-site.xml 文件,文件同样位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下.
找到 <configuration> 节点,在该节点下添加如下代码:
<property>
<!-- mapreduce为shuffle -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!-- 设置resourcemanager主机 -->
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.109</value>
</property>
<property>
<!-- 设置web安全任务的主机和端口 -->
<name>yarn.web-proxy.address</name>
<value>192.168.1.109:8089</value>
</property>
<property>
<!-- 开启日志,可以在yarn中查看日志 -->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!-- 设置yarn删除日志的时间 -->
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<!-- 设置yarn的内存 -->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<property>
<!-- 设置yarn的cpu为8核 -->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
修改 yarn-site.xml
修改后效果如下:
6,修改 slaves 文件,文件同样位于 / home/software/hadoop-2.7.3/etc/hadoop 目录下.
hadoop 可以通过脚本命令在整合集群范围内启动和停止守护进程,但是,需要告诉命令 hadoop 集群中有哪些机器,slaves 文件的作用正是如此,slaves 文件中包含了机器的主机名或者是 IP 地址,每行代表一个机器信息,该文件列举了可以运行 datanode 和节点管理器(nodemanager)的机器.当然,slaves 文件可以不放在 / home/software/hadoop-2.7.3/etc/hadoop 目录下,通过修改 hadoop-env.sh 配置文件中的 HADOOP_SLAVES 设置可以把 slaves 放到别的地方并赋予一个别名.
在 slaves 中添加如下内容:
192.168.1.106
192.168.1.109
192.168.1.110
hadoop 集群主机地址
修改后效果如下:
7,分发 hadoop-2.7.3
进行如上配置之后,把 hadoop-2.7.3 文件拷贝到其他机器上,注意,先格式化 namenode 之后再拷贝.
· ①,格式化 hadoop:进入到 hadoop-2.7.3 文件下,及 / home/software/hadoop-2.7.3 路径下,输入命令:bin/hadoop namenode -format,等待格式化完成,格式化完成之后,在屏幕上打印出来的最后几行,可以看到 has been successfully formatted 代表格式化成功:
②,分发 hadoop-2.7.3 文件到其他机器上:使用 scp -r hadoop-2.7.3 192.168.1.109:/home/software,scp -r hadoop-2.7.3 192.168.1.110:/home/software 命令把 hadoop-2.7.3 文件拷贝到 192.168.1.109 和 192.168.1.110 机器上的 / home/software 路径下.
8, 启动服务
①,启动 hdfs 服务:在 namenode 主机上,进入 / home/software/hadoop-2.7.3 目录下,输入命令 sbin/start-dfs.sh,等待服务启动.启动服务的过程中,会提示是否确定连接其他机器(Are you sure you want to continue connecting (yes/no)?),输入 yes 即可.启动成功之后,输入 jps 命令可以看到启动了 NameNode 和 DataNode 守护进程;其他两台机器上分别启动了 DataNode,SecondaryNameNode,DataNode.
②,启动 yarn 服务:启动 yarn 服务需要在 192.168.1.109 机器上启动,因为在 yarn-site.xml 配置文件中,配置了 yarn 的服务地址为 192.168.1.109.进入目录 / home/software/hadoop-2.7.3 下,输入命令:sbin/start-yarn.sh, 等待服务启动.
③,启动 jobhistory:在 192.168.1.106 机器上启动 jobhistory,进入目录 / home/software/hadoop-2.7.3 下,输入命令:sbin/mr-jobhistory-daemon.sh start historyserver, 等待服务启动.
④,启动 proxyserver 防护进程:在 192.168.1.109 机器上启动 proxyserver,进入目录 / home/software/hadoop-2.7.3 下,输入命令:sbin/yarn-daemon.sh start proxyserver, 等待服务启动.
9,通过 web 界面查看 hdfs 和 yarn
①,在浏览器输入地址:192.168.1.106:50070,能看到如下 hdfs web 界面:
②,在浏览器输入地址:192.168.1.109:8088,能看到如下 yarn web 界面:
十,结语
至此,hadoop 集群模式安装并配置成功,可以在该集群环境上部署 hadoop 的应用,比如 hive,hue,impala 等应用,使 hadoop 投入工作.但是,此时的集群并不健壮,还需要进一步配置 hadoop.在接下来的博文中会详细记录.
来源: https://www.cnblogs.com/cenwei/p/7906531.html