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

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

目录

Hadoop分布式集群搭建

写在前面

之前已经搭过Hadoop伪分布式,这次就大致说说分布式是怎么回事,其实他们也就是配置文件不一样,其他都是差不多的,但是为了更熟悉相关操作,我还是建立了三台虚拟机,从头搭起(为了更好的体验,我特地加了内存条,心疼我的钱啊)当然,搭建的方法不限于这一种,且顺序也不一定相同,我只是按自己的来

框图

其实里面很核心的一个东西HDFAS(Hadoop Distributed File System),Hadoop分布式文件系统,我们将庞大的数据存储在这。我们的主节点中有NameNode,ResourceManager,SecondaryNameNode。然后的两个slave节点中放DataNode,NodeManager.

1365898-20190422215910425-129530880.png

第一步 建立虚拟机

推荐使用CentOs,真的非常好用,一开始我们就建立一个就可以了(这个就不用我再说明了),然后安装完成我们可以进行克隆,然后就得到另外两台机子,当然,我们得重新配置这两个Slave,把内存调成1G,处理器都调成1,当然,如果你的机子配置好的可怜,可以当我这是句废话。然后开机,设置成开机默认以黑窗启动,不要开图形界面,否则卡的要死。。。。

之前看某些文章说手动配置三台机子的IP,其实这个没什么必要,动态分配也是可以的,手动的话反而麻烦,如果说有什么必要性的话,目前还是学习阶段,瞎捣鼓就是要命。

然后我们用Xshell连接上三台虚拟机,这样操作实在是方便舒服。(Putty也还可以啦)

第二步 hostname设置

每台虚拟机中设置hostname

sudo vi /etc/sysconfig/network然后编辑下列文本NETWORKING=yesHOSTNAME=master   #master中就写master,slave1就写slave1,2就写2#当然,你名字可以随便取,不一定像我这样master啊。。。

然后设置hostname与IP的映射

sudo vi /etc/hosts然后在文本最底下添加192.168.xxx.xxx master #IP地址是你的虚拟机的,你可以使用ifconfig查看192.168.xxx.xxx slave1192.168.xxx.xxx slave2

注意啊,如果你的hostname没改的话,去 /etc/hostname改

角色的分配

master: NameNode DataNode ResourceManager NodeManager SecondaryNameNode

slave1:DataNode NodeManager

Slave2:DataNode NodeManager

SSH 免密登录

为了省去每次登录输入密码的操作(人的本性懒)我们设置ssh免密登录

ssh-keygen -t rsa #生成key

然后一路回车(每个虚拟机都要生成一次)

然后你 ls -al会看到一个隐藏文件夹 .ssh,我们的key就在里面

1365898-20190422215928901-1769486614.png

我们进去会看到1365898-20190422215939058-1909084279.png

然后我们不是确定了master为老大么,我们分别使用

ssh-copy-id -i ~/.ssh/id_rsa.pub masterssh-copy-id -i ~/.ssh/id_rsa.pub slave1ssh-copy-id -i ~/.ssh/id_rsa.pub slave2

将key传到本地跟另外两台机器,然后每个./ssh里面会多个 authorized_keys文件

然后你就可以使用 ssh master(或是ssh slave1或是ssh slave2登录了)

jdk安装

这个具体我就不说了,详情参照伪分布那篇文章,不过这次我是在 home中建了个app文件夹,方便我后面操作,所以环境变量配置也是要配置正确

sudo vi ~/.bash_profile#然后在最底下键入export JAVA_HOME=/root/app/jdk  #这里是你jdk的安装路径export PATH=$JAVA_HOME/bin:$PATH#保存并退出,然后source ~/.bash_profile 生效一下

Hadoop安装

我将Hadoop安装包解压至我建立的app文件夹中,然后配置Hadoop环境变量

sudo vi ~/.bash_profile#在刚才Jdk下面键入export HADOOP_HOME=/root/app/hadoop #这是你Hadoop的安装路径export PATH=$HADOOP_HOME/bin:$PATH#保存并退出,然后source ~/.bash_profile 生效一下

Hadoop文件配置

hadoop-env.sh的配置

进入 cd ~/app/hadoop/etc/hadoop,然后ls会看到一大堆配置文件

先配置hadoop-env.sh,

sudo vi hadoop-env.sh#找到 export JAVA_HOME=${JAVA_HOME}将${java_home}改成你的java_home路径

core-site.xml配置

sudo vi core-site.xml#键入配置
fs.defaultFS
hdfs://master:9000
#这里是你的主机名
hadoop.tmp.dir
/usr/local/soft/hadoop-2.6.0/tmp
fs.trash.interval
1440

hdfs-site.xml配置

sudo vi hdfs-site.xml#添加
dfs.replication
1
dfs.permissions
false

mapred-site.xml配置

这个文件一开始是叫做mapred-site.xml.template 模板啊。所以使用

mv mapred-site.xml.template mapred-site.xml 修改文件名

sudo vi mapred-site.xml#添加
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888

yarn-site.xml配置

sudo vi yarn-site.xml#添加
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800

Slaves配置

顾名思义,这个就是将我们的slave放进去

sudo vi slaves#删去原有的localhost,添加masterslave1slave2

当然这些配置hadoop官网都有说明,如果想更细节地了解,请前去看看。下面是官网对于这些配置中的参数说明1365898-20190422220026881-241430041.png

1365898-20190422220057703-466009862.png

分发到另外两台机器

我们目前的配置都是在master上操作的,但是我们必须得保证每台机器都有这样的配置,所以我们需要将master上的app 分发到slave1 和slave2上(这就是我单独建立app文件夹的原因,因为我需要进行分发,所以,将hadoop,jdk都放在其中,便于打包发过去)

我们使用的命令是

scp -r ~/app hadoop@slave1:~/#这里hadoop@slave1就是你终端前面那个东西,:后面是你分发到的文件路径,#最好跟master一样,要不然环境变量里面路径得改#-r是递归的意思,app中所有文件全部分发scp -r ~/app hadoop@slave2:~/

当然,.bash_profile也要发的

scp ~/.bash_profile hadoop@slave1:~/scp ~/.bash_profile hadoop@slave2:~/#这个东西分发过去别忘了生效

然后就是漫长的等待

NameNode格式化

这一步在master上执行,进入 cd /app/hadoop/bin/ 然后执行

./hdfs namenode -format

1365898-20190422220111482-2050073939.png

显示上图则成功

启动Hadoop

这里先关闭防火墙,systemctl stop firewalld

然后我们进入 cd /app/hadoop/sbin/ , ls查看一下sbin下有哪些文件

1365898-20190422220132600-484577857.png

然后我们开始启动hadoop

./start-all.sh  #启动所有,当然也可以一个一个启动

启动完毕我们执行jps命令,master中出现

namenodesecondarynamenodedatanoderesourcemanagernodemanager

slave1中出现

datanodenodemanager

slave2中出现

datanodenodemanager

由此,分布式Hadoop集群搭建完毕

后话

其实如果只是学习,不是非得用分布式,与其折磨自己,还不如先用伪分布将hadoop玩玩透,其实就与分布式没差,都是一样的。

转载于:https://www.cnblogs.com/c4ri5j/p/10753395.html

你可能感兴趣的文章
PHP wamp server问题
查看>>
Spring Data Redis学习
查看>>
js闭包理解案例-解决for循环为元素注册事件的问题
查看>>
2015.04.23,外语,读书笔记-《Word Power Made Easy》 12 “如何奉承朋友” SESSION 33
查看>>
Spring+SpringMVC+JDBC实现登录
查看>>
生与死之间
查看>>
NEFU 109
查看>>
HDU 5435
查看>>
git从已有分支拉新分支开发
查看>>
滚动条隐藏兼容写法
查看>>
SQL2005查询所有表的大小
查看>>
Shell 正则表达式
查看>>
Docker run命令参数整理
查看>>
qt-opencv配置mingw编译器
查看>>
CSS之Medial Queries的另一用法:实现IE hack的方法
查看>>
linux-CentOS6.4下安装oracle11g详解
查看>>
实力为王 八年DBA经验谈
查看>>
2-sat 问题 【例题 Flags(2-sat+线段树优化建图)】
查看>>
ext3.2 右击动态添加node的treepanel
查看>>
Database links
查看>>