ubuntu hadoop 集群?Ubuntu更新软件源

这篇文章给大家聊聊关于ubuntu hadoop 集群,以及Ubuntu更新软件源对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

如何在ubuntu下搭建spark集群

搭建基于Ubuntu的Spark集群需要经过以下几个步骤。首先,确保在Ubuntu系统中已经安装了Scala,因为Spark是基于Scala开发的。安装Scala的命令为:

sudo apt-get install scala

安装完成后,通过运行scala-version,确认Scala版本(如2.11版本),并查看安装目录(如/usr/share/scala-2.11)。

接下来,下载并解压Spark。访问官方网站,找到最新版本的Spark下载链接,选择与Hadoop版本兼容的Spark版本进行下载。下载完成后,使用以下命令解压文件:

tar xvf spark-2.0.2-bin-hadoop2.7.tgz

将解压的文件夹移动到指定目录,通常选择与Hadoop同目录,如:

sudo mv spark-2.0.2-bin-hadoop2.7/usr/local/spark

进入Spark文件夹下的conf文件夹,复制并编辑spark-env.sh文件,添加环境变量设置,确保与系统环境兼容。内容如下:

export SCALA_HOME=/usr/share/scala-2.11

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

SPARK_MASTER_IP=master

SPARK_LOCAL_DIRS=/usr/local/spark

SPARK_DRIVER_MEMORY=1G

export LD_LIBRARY_PATH=/usr/local/hadoop/lib/native/:$LD_LIBRARY_PATH

接下来,复制并编辑slaves文件,设置集群的节点列表。例如:

slave01

slave02

在master节点上,先启动Hadoop,然后运行:

/usr/local/spark/sbin/start-all.sh

以启动Spark集群。使用jps命令查看启动的进程,确认Spark Master进程的加入。在slave节点上执行相同的步骤,启动Worker进程。

访问Spark的Web界面(如:192.168.100.40:8080/)以确认所有节点都已成功启动。最后,运行Spark示例程序以验证集群是否正常运行。使用以下命令:

/usr/local/spark/bin/run-example SparkPi 10--slave01 local[2]

通过结果输出(如:Pi is roughly 3.14XXXXX),确认Spark集群搭建成功。

如何构建最优化的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),因此集群内的硬件配置不要超过两种或三种。

图2- Hadoop集群服务器角色

硬件建议:

Namenode/Jobtracker:1Gb/s以太网口x2、16GB内存、4个CPU、100GB磁盘

Datanode:1Gb/s以太网口x2、8GB内存、4个CPU、多个磁盘,总容量500GB以上

实际的硬件配置可以与我们建议的配置不同,这取决于你们需要存储和处理的数据量。但我们强烈建议不要在集群中混用不同的硬件配置,以免那些较弱的机器成为系统的瓶颈。

Hadoop的机架感知

Hadoop有一个“机架感知”特性。管理员可以手工定义每个slave数据节点的机架号。为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能。

图3- Hadoop集群的机架感知

为了防止数据丢失,Hadoop会将每个数据块复制到多个机器上。想象一下,如果某个数据块的所有拷贝都在同一个机架的不同机器上,而这个机架刚好发生故障了(交换机坏了,或者电源掉了),这得有多悲剧?为了防止出现这种情况,必须要有一个人来记住所有数据节点在网络中的位置,并且用这些知识来确定——把数据的所有拷贝们放在哪些节点上才是最明智的。这个“人”就是Name Node。

另外还有一个假设,即相比不同机架间的机器,同一个机架的机器之间有着更大的带宽和更小的延时。这是因为,机架交换机的上行带宽一般都小于下行带宽。而且,机架内的延时一般也小于跨机架的延时(但也不绝对)。

机架感知的缺点则是,我们需要手工为每个数据节点设置机架号,还要不断地更新这些信息,保证它们是正确的。要是机架交换机们能够自动向Namenode提供本机架的数据节点列表,那就太棒了。

Hadoop软件的安装和配置

Hadoop集群有多种构建方式:

手工下载tar文件并复制到集群中

利用Yum仓库

利用Puppet等自动化部署工具

我们不建议采用手工方式,那只适合很小的集群(4节点以下),而且会带来很多维护和排障上的问题,因为所有的变更都需要用scp或ssh的方式手工应用到所有的节点上去。

从以下方面来看,利用Puppet等部署工具是最佳的选择:

安装

配置

维护

扩展性

监控

排障

Puppet是Unix/Linux下的一个自动化管理引擎,它能基于一个集中式的配置执行增加用户、安装软件包、更新服务器配置等管理任务。我们将主要讲解如何利用Yum和Puppet来安装Hadoop。

利用Yum/Puppet搭建Hadoop集群

要利用Puppet搭建Hadoop集群,首先要符合以下前置条件:

包含所有必需Hadoop软件的中央仓库

用于Hadoop部署的Puppet装载单(manifest)

用于Hadoop配置管理的Puppet装载单

用于集群维护的框架(主要是sh或ksh脚本),以支持集群的start/stop/restart

利用puppet构建整个服务器(包括操作系统和其它软件)

注:如果要用Yum来安装Hadoop集群,则所有服务器应该预先构建完成,包括操作系统和其它软件都应安装完毕,yum仓库也应在所有节点上设置完毕。

构建Datanode/Tasktracker

如果用Yum安装Datanode/Tasktracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-datanode–y

yum install hadoop-0.20-tasktracker–y

换成Puppet的话,则是:

class setup_datanode{

if($is_datanode== true){

make_dfs_data_dir{$hadoop_disks:}

make_mapred_local_dir{$hadoop_disks:}

fix_hadoop_parent_dir_perm{$hadoop_disks:}

}

# fix hadoop parent dir permissions

define fix_hadoop_parent_dir_perm(){

}

# make dfs data dir

define make_dfs_data_dir(){

}

# make mapred local and system dir

define make_mapred_local_dir(){

}

}# setup_datanode

构建Namenode(及辅助Namenode)

如果用Yum安装Namenode,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-namenode–y

yum install hadoop-0.20-secondarynamenode–y

换成Puppet的话,则是:

class setup_namenode{

if($is_namenode== true or$is_standby_namenode== true){

...

}

exec{"namenode-dfs-perm":

...

}

exec{"make${nfs_namenode_dir}/dfs/name":

...

}

exec{"chgrp${nfs_namenode_dir}/dfs/name":

...

}

if($standby_namenode_host!=""){

...

}

exec{"own$nfs_standby_namenode_dir":

...

}

}

#/standby_namenode_hadoop

if($standby_namenode_host!=""){

...

}

exec{"own$standby_namenode_hadoop_dir":

...

}

}

}

}

class setup_secondary_namenode{

if($is_secondarynamenode== true){

...

}

....

}

exec{"namenode-dfs-perm":

...

}

}

}

构建JobTracker

如果用Yum安装Jobtracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-jobtracker–y

换成Puppet的话,则是使用与构建Namenode相同的装载单,唯一的区别在于,在Jobtracker机器上,会启动Jobtracker——即将该机器上的is_jobtracker设置为true。

搭建成功之后重新开启UBUNTU,怎么启动hadoop

终于成功搭建完毕Hadoop完全分布式环境。其中耽误时间最长的是datanode无法启动。其实是自己的低级错误。

3台虚拟机,一台master,两台salve。

第一次错误,查看日志,是hdfs-site.xml文件配置拼写错误。

第二次到第N次都是 slave无法连接到master,以下是我检查的方向:

1.master和 slave的防火墙确认是关闭的。

2.再次检查配置文件:fs.default.name和mapred.job.tracker的value值 master和ip都试试。

3.再第一次发生错误修改完毕后,format namenode时无法成功,这是因为配置的dfs.name.dir和dfs.data.dir文件目录没有删除,需要手动删除master和slave的相关文件夹。

4.ssh连接。配置完ssh无密码登陆之后,需要连接一次(第一次连接会让你输入yes?),这正是我花费时间最长的地方。master连接slave,slave也要连接master。之后再format,启动hadoop,jps查看进程成功启动。

从这次搭建环境中,学会了试着分析日志找到问题,同时通过一步步排除可能的原因得到最后的原因。

相关阅读:

Ubuntu 13.04上搭建Hadoop环境

Ubuntu 12.10+Hadoop 1.2.1版本集群配置

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

Ubuntu下Hadoop环境的配置

单机版搭建Hadoop环境图文教程详解

搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)

阅读剩余
THE END