网上中文资料几乎没有关于EC2平台的Hadoop的集群搭建,又碍于英语水平,同时加上关键点说明的也比较分散,所以在这上面花费了不少的时间。现在弄好了,整理下整个配置过程,也当重新巩固下。
一、新建Instance
在EC2控制台上新建三个instance,具体的可以参照EC2instance的建立。可以分别取名master,slave1和slave2,其中master将作为namenode和jobtracker,slave1和slave2将作为datanode和tasktracker。(这里使用的是free tire elible的ubuntu 12.10服务器)。
选中一个服务器,在页面下半部会出现instantce的外部dns地址,用来远程访问,比如我这里master的地址为:ec2-54-251-208-185.ap-southeast-1.compute.amazonaws.com。
二、SSH的配置
aws instance之间通信使用RSA加密,在建立instance时会自动下载一个.pem文件,这个就是RSA的私钥,而公钥在建立instance的时候就已经自动设置好了。
运行cmd,输入ssh 命令连接master,需要用-i参数指明本地私钥的位置,替换红色部分
ssh -i your/path/to/your.pem ubuntu@your.instance.adress , ubuntu是aws中所有ubuntu instance的默认用户名。例如:
登陆成功后进入~/.ssh目录,
cd ~/.ssh
新建一个id_rsa文件,
这里用的是winscp(没有的可以上网搜索下载)。如下图:
登录后,找到/home/ubuntu/.ssh,进入后,在里面新建 id_rsa。然后用记事本之类的工具打开本地的私钥文件,全部复制到id_rsa中,保存关闭。
将文件权限降低至600。
chmod 600 id_rsa
然后设置ssh代理,
ssh-agent bash
ssh-add
若出现Identity added: /home/ubuntu/.ssh/id_rsa (/home/ubuntu/.ssh/id_rsa)则表示设置成功,此时可以试着在master上ssh其他slave看是否成功。
以上是关键的步骤之一,因为hadoop工作时需要master和slave之间的交互,而在EC2平台上任意instance之间交互都是需要进行RSA验证的。至此,master与slave之间通信可自动完成验证过程。
三、下载hadoop和java运行环境
这里使用hadoop1.0.4和jdk7
sudo apt-get update
sudo apt-get install openjdk-7-jdk
wget http://www.fayea.com/apache-mirror/hadoop/common/hadoop-1.0.4/hadoop-1.0.4.tar.gz
(需要说明的是,上面的下载地址不能保证你也能够下载,所以去hadoop官方网站找:hadoop下载地址)。
解压hadoop
tar xzf hadoop-1.0.4.tar.gz
这一步之后很多教程建议将解压之后的文件夹放到/usr/local/目录下,可是如若如此会遇到很多关于用户权限的麻烦,因此这里就将其放在原位(/home/ubuntu/)。
对所有的slave进行相同操作。
四、配置相关参数。
此步参阅了熊天翼的博客
先将hadoop-1.0.4重命名下:
sudo mv hadoop-1.0.4 hadoop
回到master,进入hadoop/conf 目录,
cd ~/hadoop/conf
1.设置好三台机器上的/etc/hosts和/etc/hostname
host这个文件用于定义主机名与IP地址之间的对应关系。图所示为我的配置:
原本在第一行和第五行之间是没有内容的,这些内容是加上去的。那么这里要说下如何弄得ip地址了,在/etc/hostname里面。在AWS建立的虚拟机,用的主机名即是ip地址。
用vim /etc/hostname
你将可以看到里面内容为:ip-10-130-186-142。这个就是这台虚拟机的ip地址了,记下后,将这个名字改为master或者slave1或者slave2,这样方便。
使用vim,如果出现无法保存,如图:
那么输入:w !sudo tee %
之后强制退出即可。
2.修改hadoop-env.sh中的JAVA_HOME参数
vim hadoop-env.sh(当然也可以nano hadoop-env.sh,甚至也可以用之前提到的winscp工具)
具体vim,nano如何使用,自己网上找操作方法
将JAVA_HOME那一行去掉注释,后面修改为
JAVA_HOME = /usr/
如图:
此路径(仅)适用于EC2 ubuntu instance
3.修改core-site.xml
该配置文件指明了HDFS文件系统的服务器以及服务器内路径位置,加入如下配置:
nano core-env.xml
这里的master就是在之前/etc/hosts里面定义的主机名与IP地址之间的对应关系。而第二个value中间的路径是hadoop存储数据的位置,这个可以根据个人有所不同,但此文件夹需要手动创建。
4.修改hdfs-site.xml
该配置文件指明了文件需要备份的份数。加入如下配置:
nano hdfs-site.xml
5.修改mapred-site.xml
该配置文件指明了jobtracker的地址,以及其他和MapReduce相关的配置。此处只设置jobtracker为master
加入如下配置:
nano mapred-site.xml
6.masters和slaves两个文件中需要分别申明一下master和slave1,slave2外部dns地址
可以看到里面只是写了master slave1 slave2。这些在之前/etc/hosts里面已经定义的主机名与IP地址之间的对应关系。
7.用scp命令将master的配置推送到slave
先回到master。确认自己是在/home/ubuntu/hadoop/conf目录下。输入如下命令(红色部分填写slave1,slave2的ip地址):
scp * your.slave1.ipadress:/home/ubuntu/hadoop/conf/
scp * your.slave2.ipadress:/home/ubuntu/hadoop/conf/
如果这一步失败,提示"public key denied"说明ssh代理设置不成功。
至此,instance配置全部完成。
五、配置EC2 Security Group
Security Group 起到了instance的分组和防火墙的作用。如下图所示,目前Security Group只开放了22(SSH)端口,Source 0.0.0.0/0 表示允许任意来源访问该端口。
还记得之前配置HDFS和JobTracker的时候用到了9000和9001端口吗?这些端口默认没有打开,但却是Hadoop运行所必须的。
在左侧添加Hadoop所需的端口,并将source设置成instance所在的Security group,点击Apply Rule Changes ,完成后如下图所示。
至此,就结束配置了。
六、运行Hadoop
1.进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作。
cd /home/ubuntu/hadoop
bin/hadoop namenode -format
2.启动bin/start-all.sh
bin/start-all.sh
3.检测hadoop是否启动成功
jps
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop集群搭建好了!如下图:
也可以用w3m查看下。
输入:w3m http://master:50030或者w3m http://master:50070查看集群状态。如图:
七、小结
集群配置只须记住conf/hadoop-env.sh、conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml、conf/mapred-queues.xml这5个文件的作用即可。
作为分布式系统,hadoop需要通过SSH的方式启动处于slave上的程序,因此必需安装和配置SHH。所以说安装hadoop前需要安装JDK和SSH。
下面两种方法在实际应用中也可能会用到:
1.重启坏掉的DataNode或JobTracker。
当hadoop集群的某单个节点出现问题时,一般不必重启整个系统,只须重启这个节点,它会自动连入整个集群。
在坏死的节点上输入如下命令即可:
bin/hadoop-daemon.sh start DataNode
bin/hadoop-daemon.sh start jobtracker
2.动态加入DataNode或TaskTracker。这个命令允许用户动态将某个节点加入集群中。
bin/hadoop-daemon.sh --config ./conf start DataNoda
bin/hadoop-daemon.sh --config ./conf start tasktracker
问题
如果用PuTTy连接到远程终端,无法用wget下载完整的压缩包。不知道为什么。。。
相关推荐
CDH集群搭建手册 CDH(Cloudera Distribution of Hadoop)是一种基于 Apache Hadoop 的大数据解决方案,提供了一个功能强大的大数据分析平台。以下是 CDH 三节点基于 CentOS 6.8 的安装和卸载教程。 一、CDH 安装...
1699.3.2 配置集群类型 1699.4 在EC2上运行MapReduce程序 1719.4.1 将代码转移到Hadoop集群上 1719.4.2 访问Hadoop集群上的数据 1729.5 清空和关闭EC2实例 1759.6 Amazon Elastic MapReduce和其他AWS服务 1769.6.1 ...
经济性则在于使用商用硬件即可搭建Hadoop集群,而不必依赖昂贵的专用硬件;灵活性则是指Hadoop支持多种数据类型和处理模式,从简单的日志分析到复杂的机器学习算法。 随着大数据时代的来临,Hadoop的影响力持续扩大...
Hadoop是许多大型科技公司云计算平台的重要组成部分,如雅虎的Pig项目、Amazon的S3和EC2服务,以及IBM的“蓝云”计划。Hadoop的分布式计算能力使其成为处理海量数据的理想选择,特别是在云计算环境中,可以轻松地...
这包括利用云计算服务,如亚马逊的弹性计算云(EC2)或谷歌的计算引擎,来搭建和运行Hadoop集群。 除了上述知识点,书中还包含了一些关于版权和出版的信息。《Hadoop MapReduce Cookbook》一书由Srinath Perera和...
其中,亚马逊的弹性云(Amazon Elastic Cloud, EC2)提供了灵活的计算能力,可以根据业务需求轻松增加或减少服务器数量。 【弹性MapReduce(EMR)】 亚马逊的弹性MapReduce(EMR)是针对大数据处理的云服务,它...
- **背景**:利用Hadoop和Amazon Elastic Compute Cloud (EC2)构建了包含20个节点的虚拟集群。 - **应用场景**:将4TB的TIFF图像和相关的文本数据转换为适合网络发布的格式,仅用了36小时就完成了这一大规模的数据...
在本Hadoop实验报告中,主要涉及了在Amazon Web Services (AWS)的EC2实例上部署和配置Hadoop集群的过程,以及解决遇到的一些问题。以下是关键步骤和知识点的详细说明: 1. **选择操作系统和实例类型**:实验初始...
2. 集群部署:如何在云平台上设置Hadoop集群,包括安装、配置和优化各个组件。 3. 资源调度:利用YARN或Mesos等资源管理系统,确保高效地分配和调度计算资源。 4. 容错机制:如何确保在虚拟化环境中,即使硬件故障也...
读者将学习如何将Accumulo与Hadoop和Zookeeper连接,以及如何监控集群的性能,以便发现性能瓶颈,并进一步将其与Amazon EC2、Google Cloud Platform、Rackspace和Windows Azure等云平台集成。集成时,本书特别注重...
2004年,开源社区以Java为基础,构建了Hadoop框架,这一框架的核心目标是实现MapReduce算法,使其能够将应用分解成微小的任务单元,这些单元可以在集群中的任意节点上执行或重新执行。Hadoop的这一特性极大地提升了...
总结来说,本文档将指导用户如何在AWS EC2上配置一个支持S3 IO的Spark-Pyspark环境,结合Jupyter Notebook,提供一个强大且灵活的数据处理和分析平台。通过这个平台,数据科学团队可以在云端高效地处理大规模数据,...
这使得开发者可以在本地模拟实际的生产环境进行测试和开发,然后再将配置迁移到EC2上。 在文件名“samza-ec2-ansible-master”中,我们可以推测这是项目的主要代码库,很可能包含Ansible playbook文件和其他辅助...
- **2007年7月**:用闲置资源搭建了第一个Hadoop平台。 - **2008年3月**:进行了系统评估。 - **2008年10月**:发布了“大云”0.5版本。 - **2008年12月**:建设了一个256节点的集群和分析工具。 - **2009年8月**:...
搭建Presto集群涉及的主要步骤包括:选择合适的基础架构,例如EC2实例;配置每个节点,安装Java运行环境;下载Presto服务器二进制包,解压并配置配置文件,如`config.properties`和`jvm.config`;初始化Presto目录...
对于Spark在云环境中的部署,本章将介绍在EC2(基本环境和EC2MR)上的部署。如果你的机器或者集群中已经部署了Spark,可以跳过本章直接开始使用Spark编程。 不管如何部署Spark,首先得从获得Spark的一个版本,截止到...
Elasticluster是一款开源工具,专门用于在云环境中快速创建虚拟机(VM)集群,它支持多种云平台,包括Amazon EC2、Microsoft Azure和Google Cloud Platform(GCP)。这款工具结合了灵活性和自动化,使得研究人员和...
3. SaaS(软件即服务):通过网络提供给用户的应用程序,用户无需自己搭建基础设施和平台,直接使用即可,例如Google Docs、Salesforce等。 随着云计算技术的不断发展,企业对于云计算的需求日益增长,云计算的应用...
在Hadoop中集成LZO压缩,可以有效减少数据存储空间,提高数据传输效率,尤其对于I/O密集型任务,能够显著提升Hadoop集群的性能。在使用Hadoop LZO时,需要注意安装相应的编解码器,并配置Hadoop以支持LZO格式。 2. ...