博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop集群环境搭建
阅读量:5947 次
发布时间:2019-06-19

本文共 6940 字,大约阅读时间需要 23 分钟。

第一部分:准备Linux环境

创建虚拟机安装系统的步骤在这里就不讲了,详细步骤请看本人其他文章
打开建好的虚拟机
一、修改Hostname
1、 临时修改hostname

hostname bigdata-01.liu.com

这种修改方式,系统重启后就会失效

2、 永久修改hostname

vim /etc/sysconfig/network

打开后编辑如下内容

NETWORKING=yes #使用网络

HOSTNAME=bigdata-01.liu.com #设置主机名

二、配置Host

vim /etc/hosts

添加如下内容

172.18.74.172 bigdata-01.liu.com

三、关闭防火墙

查看防火墙状态

service iptables status

临时关闭防火墙

service iptables stop

永久关闭防火墙(需要重启才能生效)

chkconfig iptables off

四、关闭selinux

selinux是Linux一个子安全机制,学习环境可以将它禁用

vim /etc/sysconfig/selinux

把SELINUX设置成disabled

SELINUX=disabled

五、安装JDK

检测系统是否安装jdk

java -version

如果显示有openjdk需要先卸载,再安装Oracle的jdk(其他版本的jdk对hadoop的一些命令不是很支持)

rpm -qa | grep java

Hadoop集群环境搭建

卸载openjdk,.noarch的文件可以不用删除

rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.4.e17_5.x86_64

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.4.e17_5.x86_64

然后再次使用rpm -qa | grep java 查看是否已经卸载openjdk,如果还有就再卸载一遍

用xshell远程工具远程虚拟机,安装lrzsz命令

yum -y install lrzsz

导入jdk包并解压到 /opt/modules目录下

rz

tar -zvxf jdk-8u181-linux-x64.tar.gz -C /opt/modules

添加环境变量

设置JDK的环境变量 JAVA_HOME,需要修改配置文件/etc/profile,追加

export JAVA_HOME="/opt/modules/jdk1.8.0_181"

export PATH=$JAVA_HOME/bin:$PATH

Hadoop集群环境搭建

修改完毕后,执行 source /etc/profile 使修改生效
再次执行 java –version,可以看见已经安装完成
Hadoop集群环境搭建

第二部分:hadoop安装

完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上。
一、环境准备
1.克隆虚拟机
Vmware左侧选中要克隆的机器,这里对原有的BigData01机器进行克隆,虚拟机菜单中,选中管理菜单下的克隆命令。

选择“创建完整克隆”,虚拟机名称为BigData02,选择虚拟机文件保存路径,进行克隆。

再次克隆一个名为BigData03的虚拟机。

2.配置网络
修改网卡名称
在BigData02和BigData03机器上编辑网卡信息。执行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因为是从BigData01机器克隆来的,所以会保留BigData01的网卡eth0,并且再添加一个网卡eth1。并且eth0的Mac地址和BigData01的地址是一样的,Mac地址不允许相同,所以要删除eth0,只保留eth1网卡,并且要将eth1改名为eth0。将修改后的eth0的mac地址复制下来,修改network-scripts文件中的HWADDR属性。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改网络参数:

BigData02机器IP改为172.18.74.173

BigData03机器IP改为172.18.74.174

!!如果是在真实的服务器里搭建Hadoop环境就需要再建两个虚拟机,按照上面的步骤再来一遍了,服务器里克隆主机不是很理想!!
3.配置Hostname以及hosts
BigData02配置hostname为 bigdata-02.liu.com

BigData03配置hostname为 bigdata-03.liu.com

BigData01、BigData02、BigData03三台机器hosts都配置为:

172.18.74.172 bigdata-01.liu.com

172.18.74.173 bigdata-02.liu.com
172.18.74.174 bigdata-03.liu.com

4.配置Windows上的SSH客户端

在本地Windows中的SSH客户端上添加对BigData02、BigData03机器的SSH链接

二、服务器功能规划

bigdata-01.liu.com bigdata-02.liu.com bigdata-03.liu.com
NameNode ResourceManage SecondaryNameNode
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer

三、在第一台机器上安装新的Hadoop

创建hadoop目录

mkdir -p /opt/modules/app

导入Hadoop压缩包并解压到Hadoop目录

rz

tar -zxf /opt/sofeware/hadoop-2.7.4-with-centos-6.7.tar.gz -C /opt/modules/app/

切换到/opt/modules/app/hadoop-2.7.4/etc/hadoop目录,配置该目录下的Hadoop JDK路径即修改hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径:

export JAVA_HOME="/opt/modules/jdk1.8.0_181"

配置core-site.xml

vim core-site.xml

<configuration>

<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-01.liu.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/app/hadoop-2.7.4/data/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>

fs.defaultFS为NameNode的地址。

hadoop.tmp.dir为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。

配置hdfs-site.xml

vim hdfs-site.xml

<configuration>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata-03.liu.com:50090</value>
</property>
</configuration>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将BigData03规划为SecondaryNameNode服务器,所以这里设置:bigdata-03.liu.com:50090

配置slaves
vim slaves

bigdata-01.liu.com

bigdata-02.liu.com
bigdata-03.liu.com

slaves文件是指定HDFS上有哪些DataNode节点

配置yarn-site.xml

vim yarn-site.xml

<configuration>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-02.liu.com</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>

根据规划yarn.resourcemanager.hostname这个指定resourcemanager服务器指向bigdata-02.liu.com

yarn.log-aggregation-enable是配置是否启用日志聚集功能

yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多长时间

配置mapred-site.xml
从mapred-site.xml.template复制一个mapred-site.xml文件

cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

<configuration>

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata-01.liu.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata-01.liu.com:19888</value>
</property>
</configuration>

mapreduce.framework.name设置mapreduce任务运行在yarn上

mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在BigData01机器上

mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号

四、设置SSH无密码登录
Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的SSH是无密码登录的
在BigData01上生成公钥

ssh-keygen -t rsa

一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh目录中会生成公钥文件(id_rsa.pub)和私钥文件(id_rsa), .ssh是隐藏文件在home目录下ls -a就会显示出来

分发公钥

ssh-copy-id bigdata-01.liu.com

ssh-copy-id bigdata-02.liu.com
ssh-copy-id bigdata-03.liu.com

五、分发Hadoop文件

首先在其他两台机器上创建存放Hadoop的目录

mkdir -p /opt/modules/app

通过Scp分发

du -sh /opt/modules/app/hadoop-2.7.4/share/doc

scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-02.liu.com:/opt/modules/app
scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-03.liu.com:/opt/modules/app

格式NameNode

在NameNode机器bigdata-01上执行格式化:

/opt/modules/app/hadoop-2.7.4/bin/hdfs namenode –format

格式化后在 /opt/modules/app/hadoop-2.7.4/data/tmp/dfs/data/ 目录下会生成一个current目录,里面有一系列文件

Hadoop集群环境搭建
注意:
如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除,不然会报错,NameNode和DataNode所在的目录是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir属性里配置的。
因为每次格式化,默认是创建一个集群ID,并写入NameNode和DataNode的VERSION文件中(VERSION文件所在目录为dfs/name/current 和 dfs/data/current),重新格式化时,默认会生成一个新的集群ID,如果不删除原来的目录,会导致namenode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时会报错。

六、启动集群

切换到/opt/modules/app/hadoop-2.7.4目录下
启动HDFS

/opt/modules/app/hadoop-2.7.4/sbin/start-dfs.sh

jps查看已经启动的服务

Hadoop集群环境搭建
启动YARN

/opt/modules/app/hadoop-2.7.4/sbin/start-yarn.sh

Hadoop集群环境搭建

也可以使用这条命令一步到位

/opt/modules/app/hadoop-2.7.4/sbin/start-all.sh

在BigData02上启动ResourceManager:

sbin/yarn-daemon.sh start resourcemanager

启动日志服务器

因为我们规划的是在BigData03服务器上运行MapReduce日志服务,所以要在BigData03上启动

/opt/modules/app/hadoop-2.7.4/sbin/mr-jobhistory-daemon.sh start historyserver

Hadoop集群环境搭建

查看HDFS Web页面
如果域名没有解析可以在搜索栏中输入ip+端口如:

172.18.74.172:50070

Hadoop集群环境搭建

查看YARN Web 页面

172.18.74.173:8088/cluster

Hadoop集群环境搭建

好啦,到这里Hadoop集群环境的搭建就完成啦。建议Ha友们搭建Hadoop环境时先去了解一下各个组件是什么这样更有利于你顺利的完成Hadoop环境的搭建,我的一些同学他们学这个比较早,那时候也没人了解Hadoop是什么,听他们说搭建了10天半个月的才搭建出来,我就是在他们的影响下逐渐了解了点Hadoop的知识,用了一天多的时间搭建好了,搭建过程中还遇到了不少突发情况,所以如果搭建过程中没有什么意外情况再加上提前了解过,半天就能搞定了,千万不要遇到困难就放弃,坚持一定会胜利的!!
。。。从前车马很慢,书信很远,一生只够爱一个人!!!

转载于:https://blog.51cto.com/13670314/2164603

你可能感兴趣的文章
要不, 我们从右往左书写数组?
查看>>
我的面试准备过程--LeetCode(更新中)
查看>>
【145天】尚学堂高淇Java300集视频精华笔记(103-104)
查看>>
如何在 React Native 中写一个自定义模块
查看>>
SegmentFault 2017 年社区周报 Vol.5
查看>>
JS用原型对象写的贪吃蛇,很粗糙的代码
查看>>
mac安装consul
查看>>
JavaScript深入之bind的模拟实现
查看>>
Learning Notes - Understanding the Weird Parts of JavaScript
查看>>
SegmentFault 2017 年社区周报 Vol.4
查看>>
两种方式javascript实现图片预览
查看>>
数据结构面试 之 单链表是否有环及环入口点 附有最详细明了的图解
查看>>
RancherOS v0.8.0发布:支持离线安装,更佳部署体验
查看>>
AI+社交,快手商业化落地之道
查看>>
Microsoft Graph:连接每个应用都需要的基础数据
查看>>
Latex格式html文件转换pdf和docx文档
查看>>
【关于Number】JavaScript中关于Number的操作
查看>>
非泄露,NSA官方开源反汇编工具GHIDRA
查看>>
保持分布式团队同步
查看>>
Node.js v7 Beta版引入citgm
查看>>