搭建hadoop集群(如何在vmware中搭建hadoop集群)

本文目录
- 如何在vmware中搭建hadoop集群
- 如何构建最优化的Hadoop集群
- 搭建Hadoop集群,一个月6T的数量需要几台服务器
- 如何搭建hadoop集群 桥接
- 搭建hadoop集群用什么操作系统
- 如何基于Docker快速搭建多节点Hadoop集群
- vmware和云服务器能一起搭建hadoop集群吗两台虚拟机一台云服务器 该怎么设置呢
如何在vmware中搭建hadoop集群
原创文档,转载请保留原文url地址
hadoop俗称分布式计算,最早作为一个开源项目,最初只是来源于谷歌的两份白皮书。然而正如十年前的Linux一样,虽然Hadoop最初十分简单,但随着近些年来大数据的兴起,其也获得了一个充分体现价值的舞台。这也正是业内普遍将Hadoop看做是下一个Linux的原因。
本文介绍基于多台vmware虚拟机来安装hadoop集群的过程及方法,通过这个小的集群让您在本地电脑上就可以研究hadoop的相关工作过程,有人会有疑问在小的虚拟机集群上研究的结果, 写的程序能否在大集群上工作正常?可以肯定的没问题的。
Hadoop的一个特性是线性增长特性,即当前数量情况下,处理时间是1, 若是数据量加倍, 后处理时间加倍, 若是在这种情况下, 处理能力也加倍则处理时间也是1.
正常情况hadoop需要较多的服务器才能搭建, 但是我们在家里学习如何去找那么服务器, 解决办法可以找几台pc机,在pc机上安装linux系统就可以了。
当然我们还有更简单的办法, 就是找一台高性能的电脑, 在电脑上安装虚拟机软件,里面创建若干台虚拟机, 然后让这些虚拟机构成一个小的内部局域网络,在这个网络上我们安装linux软件, java软件, 安装hadoop程序,我们就可以创建一个简单hadoop的研究系统, 进行软件的开发调试, 在这个小的分布式集群上开发的程序可以无缝移植到相同版本的hadoop(不同hadoop的版本兼容性不是很好, 特别是低版本同高版本, 他们的api也有些许变化)集群中。
如何构建最优化的Hadoop集群
本文将逐步介绍这些部分的安装和配置:
•网络体系结构
•操作系统
•硬件要求
•Hadoop软件安装/设置
网络架构
根据我们目前能够拿到的文档,可以认为云内的节点越在物理上接近,越能获得更好的性能。根据经验,网络延时越小,性能越好。
为了减少背景流量,我们为这个云创建了一个虚拟专用网。另外,还为应用服务器们创建了一个子网,作为访问云的入口点。
这个虚拟专用网的预计时延大约是1-2毫秒。这样一来,物理临近性就不再是一个问题,我们应该通过环境测试来验证这一点。
建议的网络架构:
•专用TOR(Top of Rack)交换机
•使用专用核心交换刀片或交换机
•确保应用服务器“靠近”Hadoop
•考虑使用以太网绑定
操作系统
我们选择Linux作为操作系统。Linux有许多不同的发行版,包括Ubuntu、RedHat和CentOS等,无论选择哪一个都可以。基于支持和许可费用的考虑,我们最终选择了CentOS 5.7。最好是定制一个CentOS的映像,把那些需要的软件都预装进去,这样所有的机器可以包含相同的软件和工具,这是一个很好的做法。
根据Cloudera的建议,OS层应该采用以下设置:
•文件系统
Ext3文件系统
取消atime
不要使用逻辑卷管理
•利用alternatives来管理链接
•使用配置管理系统(Yum、Permission、sudoers等)
•减少内核交换
•撤销一般用户访问这些云计算机的权限
•不要使用虚拟化
•至少需要以下Linux命令:
/etc/alternatives
ln、chmod、chown、chgrp、mount、umount、kill、rm、yum、mkdir
硬件要求
由于Hadoop集群中只有两种节点(Namenode/Jobtracker和Datanode/Tasktracker),因此集群内的硬件配置不要超过两种或三种。
硬件建议:
•Namenode/Jobtracker:1Gb/s以太网口x2、16GB内存、4个CPU、100GB磁盘
•Datanode:1Gb/s以太网口x2、8GB内存、4个CPU、多个磁盘,总容量500GB以上
实际的硬件配置可以与我们建议的配置不同,这取决于你们需要存储和处理的数据量。但我们强烈建议不要在集群中混用不同的硬件配置,以免那些较弱的机器成为系统的瓶颈。
Hadoop的机架感知
Hadoop有一个“机架感知”特性。管理员可以手工定义每个slave数据节点的机架号。为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能。
为了防止数据丢失,Hadoop会将每个数据块复制到多个机器上。想象一下,如果某个数据块的所有拷贝都在同一个机架的不同机器上,而这个机架刚好发生故障了(交换机坏了,或者电源掉了),这得有多悲剧?为了防止出现这种情况,必须要有一个人来记住所有数据节点在网络中的位置,并且用这些知识来确定——把数据的所有拷贝们放在哪些节点上才是最明智的。这个“人”就是Name Node。
另外还有一个假设,即相比不同机架间的机器,同一个机架的机器之间有着更大的带宽和更小的延时。这是因为,机架交换机的上行带宽一般都小于下行带宽。而且(+本站微信networkworldweixin),机架内的延时一般也小于跨机架的延时(但也不绝对)。
机架感知的缺点则是,我们需要手工为每个数据节点设置机架号,还要不断地更新这些信息,保证它们是正确的。要是机架交换机们能够自动向Namenode提供本机架的数据节点列表,那就太棒了。
搭建Hadoop集群,一个月6T的数量需要几台服务器
最好是两个做成HA。
6T的数据容量,看你副本数量设置是多少,一般默认为3,那么仅这些就需要18T硬盘,稍微大一点20T吧;这仅仅是HDFS存储,(这里我说的是一个月的,你数据保存几个月,就乘几倍)。
如果你集群上面要跑计算,MR计算出来的数据要保存HDFS的,所以,还是要根据你的结果数据来做判断,大小就看你计算任务了。
一般是这样计算硬盘大小:
(原始数据+中间数据+结果数据)*副本数量=总硬盘大小
如何搭建hadoop集群 桥接
本文通过在vmware workstation上建立三台虚拟机来搭建hadoop集群环境,其中一台作为namenode,两台作为datanode。
一、安装vmware workstation(10.0.0)(一路下一步即可)
二、创建3个虚拟机
每个虚拟机安装Ubuntu 桌面版(我用的11.10,但是有点老了,建议用12.04或更高版本)
namenode建议多给写内存,我的是namenode 1G内存,20G硬盘,datanode 800M内存,20G硬盘(我电脑内存8G,若内存不够可以少分点,但是可能有些卡)上网上式可设置为桥接方式:直接连接物理网络。
三、安装vmware tools(便于主机和虚拟机直接可以直接拖拽,复制粘贴)
点击vmware 上 虚拟机-》安装VMware tools,自动打开一个包含vmware安装包的位置,可以拷贝到你有权限的地方,例如/usr/src下用 sudo tar zxvf 软件包名称 解压,之后进入解压后的文件夹,执行
sudo ./vmware-install.sh来安装,过程中遇见yes或no一律enter键,安装后重启生效。
四、配置共享目录(让主机和虚拟机直接方便实时共享)
对每个虚拟机,点击vmware上虚拟机-》设置-》选项,选择共享文件夹,永久共享,添加一个本机的目录所为共享目录,并为这个共享起一个名字,例如叫share。这样在虚拟机上的 /mnt/hgfs下会自动生成share文件夹保持与主机上的目录实时一致。重启生效,有时生效较慢,多重启几次就行了,不知何故。
五,安装ssh,为了一会的免密码登陆
对每台虚拟机运行:sudo apt-get install openssh-server
若不成功,你可能需要更新一下资源列表了:sudo apt-get update
六、配置ssh无密码登录,方便namenode给datanode分配任务和汇总信息
说明:以下生成的秘钥默认保存在用户名空间,所以建议三台虚拟机建立同样的用户名,例如hadoop,也可以都用root用户。
在name node,和datanode都运行:
ssh-keygen –t dsa -P ’’ –f ~/.ssh/id_dsa (建议手打此命令,复制有时候不行,注意都是英文字符,-P的P是大写)
下面将三台虚拟机的公钥拷贝到共享目录中并重命名以供彼此配置使用
在name node:
scp ~/.ssh/id_dsa.pub /mnt/hgfs/share/ id_dsa0.pub
在data node 1:
scp ~/.ssh/id_dsa.pub /mnt/hgfs/share/ id_dsa1.pub
在data node 2:
scp ~/.ssh/id_dsa.pub /mnt/hgfs/share/ id_dsa2.pub
将共享目录中公钥分别添加到三台虚拟机的授权下,分别在name node,data node 1和data node 2执行:
cat /mnt/hgfs/share/id_dsa0.pub 》》 ~/.ssh/authorized_keys
cat /mnt/hgfs/share/id_dsa1.pub 》》 ~/.ssh/authorized_keys
cat /mnt/hgfs/share/id_dsa2.pub 》》 ~/.ssh/authorized_keys
测试:
ssh localhost
ssh 目标机器地址
七,安装jdk
对每个虚拟机:
下载jdk(jdk1.6.0)并解压,假定目录为/usr/src/jdk1.6.0(如果你的不是,也可以改成是,这样下面的命令直接复制就行了)
设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
export JAVA_HOME=/usr/src/jdk1.6.0
export CLASSPATH=.:$JAVA_HOME/lib.tools.jar
export PATH=$JAVA_HOME/bin:$PATH
保存退出。
要使JDK在所有的用户中使用,可以这样:
vi /etc/profile.d/java.sh
在新的java.sh中输入以下内容:
#set java environment
export JAVA_HOME=/usr/src/jdk1.6.0
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh
重启虚拟机
八、安装hadoop
在usr/src目录解压: tar zxvf hadoop-0.20.2.tar.gz
把hadoop的安装路径添加到/etc/profile中:
export HADOOP_HOME=/usr/src/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
九、配置hadoop
在hadoop-0.20.1/conf目录:
(1)对3个虚拟机,在conf/hadoop-env.sh中配置java环境
vi hadoop-env.sh
在hadoop-env.sh文件中添加
export JAVA_HOME=/usr/src/jdk1.6.0
(2) 用ifconfig命令查看ip地址,假定name node内部地址为192.168.204.157,data node 1和data node 2分别为192.168.204.162,192.168.204.173
对name node配置conf/masters和conf/slaves:
masters : 192.168.204.157
slaves : 192.168.204.162
192.168.204.173
(3)对name node, data node 1和data node2,配置conf/core-site.xml, conf/hdfs-site.xml及conf/mapred-site.xml,配置文件内的IP地址均配置为name node的IP地址(比如name node IP地址为192.168.204.157。
说明:因为三台上面这三个配置一样,所以配置一份,然后复制粘贴即可。
(又说明:下面之所以上图片是因为,新浪会把字符按html重新编译,无法正常显示,无奈啊)
十、运行hadoop
先把三台虚拟机的防火墙关了: sudo ufw disable
对name node:
进入hadoop-0.20.2/bin,首先格式化文件系统: hadoop namenode –format
对data node1 和data node 2:
进入hadoop-0.20.2/bin,执行: hadoop datanode –format
对name node:,在bin目录下执行:
start-all.sh
hadoop dfsadmin –safemode leave
hadoop dfsadmin –report, 查看节点情况,看到类似界面显示available的Datanodes 。
用jps命令查看进程,NameNode上的结果为:
26745 JobTracker
29398 jps
27664 NameNode
Data Node 1 的结果:
6718 TaskTracker
6042 DataNode
6750 jps
Data Node 2 的结果:
12173 TaskTracker
10760 DataNode
12700 jps
至此,安装成功。
搭建hadoop集群用什么操作系统
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点Hadoop集群的详细步骤。作者在发现目前的HadooponDocker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。GitHub:kiwanlau/hadoop-cluster-docker直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的HadooponDocker项目以及其存在的问题。更快更方便地改变Hadoop集群节点数目另外,alvinhenrick/hadoop-mutinode项目增加节点时需要手动修改Hadoop配置文件然后重新构建hadoop-nn-dn镜像,然后修改容器启动脚本,才能实现增加节点的功能。而我通过shell脚本实现自动话,不到1分钟可以重新构建hadoop-master镜像,然后立即运行!本项目默认启动3个节点的Hadoop集群,支持任意节点数的Hadoop集群。另外,启动Hadoop,运行wordcount以及重新构建镜像都采用了shell脚本实现自动化。这样使得整个项目的使用以及开发都变得非常方便快捷。开发测试环境操作系统:ubuntu14.04和ubuntu12.04内核版本:3.13.0-32-genericDocker版本:1.5.0和1.6.2小伙伴们,硬盘不够,内存不够,尤其是内核版本过低会导致运行失败。
如何基于Docker快速搭建多节点Hadoop集群
直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。
我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的Hadoop on Docker项目以及其存在的问题。
项目 镜像大小 问题
sequenceiq/hadoop-docker:latest 1.491GB 镜像太大,只支持单个节点
sequenceiq/hadoop-docker:2.7.0 1.76 GB
sequenceiq/hadoop-docker:2.60 1.624GB
sequenceiq/ambari:latest 1.782GB 镜像太大,使用太慢,使用复杂
sequenceiq/ambari:2.0.0 4.804GB
sequenceiq/ambari:latest:1.70 4.761GB
alvinhenrick/hadoop-mutinode 4.331GB 镜像太大,构建太慢,增加节点麻烦,有bug
我的项目参考了alvinhenrick/hadoop-mutinode项目,不过我做了大量的优化和重构。
vmware和云服务器能一起搭建hadoop集群吗两台虚拟机一台云服务器 该怎么设置呢
理论上可以的,vmware虚拟机和云服务器其实和传统物理服务器用起来没差别。但如果你说的云服务器是公有云,是vmware在你的局域网,不推荐组合起来搭建hadoop,因为互联网的网络延迟比本地高,集群会不稳,非要做的话,vmware虚拟机需要用dnat映射地址到公网

更多文章:
turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)
2026年10月11日 10:00
金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)
2026年10月11日 09:10
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40



