您当前的位置:首页 > 互联网教程

如何搭建hadoop集群 桥接

发布时间:2025-05-21 02:54:40    发布人:远客网络

如何搭建hadoop集群 桥接

一、如何搭建hadoop集群 桥接

本文通过在vmware workstation上建立三台虚拟机来搭建hadoop集群环境,其中一台作为namenode,两台作为datanode。

一、安装vmware workstation(10.0.0)(一路下一步即可)

每个虚拟机安装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用户。

ssh-keygen–t dsa-P''–f~/.ssh/id_dsa(建议手打此命令,复制有时候不行,注意都是英文字符,-P的P是大写)

下面将三台虚拟机的公钥拷贝到共享目录中并重命名以供彼此配置使用

scp~/.ssh/id_dsa.pub/mnt/hgfs/share/ id_dsa0.pub

scp~/.ssh/id_dsa.pub/mnt/hgfs/share/ id_dsa1.pub

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

下载jdk(jdk1.6.0)并解压,假定目录为/usr/src/jdk1.6.0(如果你的不是,也可以改成是,这样下面的命令直接复制就行了)

export JAVA_HOME=/usr/src/jdk1.6.0

export CLASSPATH=.:$JAVA_HOME/lib.tools.jar

export PATH=$JAVA_HOME/bin:$PATH

要使JDK在所有的用户中使用,可以这样:

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

在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

(1)对3个虚拟机,在conf/hadoop-env.sh中配置java环境

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:

(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重新编译,无法正常显示,无奈啊)

先把三台虚拟机的防火墙关了: sudo ufw disable

进入hadoop-0.20.2/bin,首先格式化文件系统: hadoop namenode–format

进入hadoop-0.20.2/bin,执行: hadoop datanode–format

对name node:,在bin目录下执行:

hadoop dfsadmin–safemode leave

hadoop dfsadmin–report,查看节点情况,看到类似界面显示available的Datanodes。

用jps命令查看进程,NameNode上的结果为:

二、Flink集群部署

Flink集群部署主要分为本地(单机)模式和集群模式。本地模式仅需直接解压即可使用,多用于简单测试,本文不赘述。集群部署模式包括Standalone、Hadoop Yarn和Kubernetes等,借助资源管理器实现分布式计算。企业最常用的是基于Hadoop Yarn的Flink模式,本文将详细讲解基于Standalone集群、Yarn资源管理器以及Kubernetes集群的部署方式。

1、节点划分:Flink集群由一个JobManager(Master)节点和多个TaskManager(Worker)节点构成。部署Standalone集群需选择4台节点,其中3台作为集群节点,1台作为提交任务的客户端。节点需满足如下特点:

4台节点角色如下:一台JobManager节点、三台TaskManager节点、一台客户端节点。

2、Standalone集群部署步骤:下载Flink最新安装包,选择Flink1.16.0版本。部署步骤包括上传压缩包、解压、配置Master节点和Worker节点、配置flink-conf.yaml文件等。具体操作如下:

配置Master节点在$masters文件中,配置Worker节点在$workers文件中。注意flink-conf.yaml文件中配置监听0.0.0.0端口,表示可以监听本机所有ip端口。完成配置后,启动Flink集群并访问Flink WebUI。

3、任务提交测试:搭建好集群后,可以将Flink任务提交到集群中运行。任务提交方式有WebUI界面上提交和命令行方式。这里以读取Socket数据进行实时WordCount统计为例,编写Java代码,打包成jar包,上传到客户端节点,并提交任务。登录Flink WebUI查看任务和结果。

1、Flink与Yarn整合:Flink基于Yarn运行任务时,需要与Hadoop进行整合。Flink版本到1.8后,不再提供基于不同Hadoop版本的安装包,需下载对应Hadoop版本的"flink-shaded-hadoop-2-uber-x.x.x-x.x.jar",上传至客户端节点的$FLINK_HOME/lib中完成整合。

2、配置及环境准备:在选择的客户端节点配置环境变量,然后上传Flink安装包解压。任务提交可通过命令行方式,以Application模式为例,上传jar包并提交任务。登录Yarn WebUI,找到提交的任务并查看结果。

本文详细介绍了Flink集群部署的两种主要方式:Standalone集群部署和基于Yarn的部署。通过以上步骤,您可以成功搭建Flink集群并进行任务部署和测试。

三、自学Java怎么入门

1、自学Java看这一篇就够啦!Java学习路线图分享给你,跟着学习吧!

2、JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

3、在Java基础板块中有6个子模块的学习:

4、基础语法,可帮助你建立基本的编程逻辑思维;

5、面向对象,以对象方式去编写优美的Java程序;

6、集合,后期开发中存储数据必备技术;

7、IO,对磁盘文件进行读取和写入基础操作;

8、网络编程,应用服务器学习基础,完成数据的远程传输。

9、学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。

10、数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。

11、该板块包括关系型数据库和非关系型数据库。

12、例如:MySQL、oracle、redis、MongoDB等。数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存。

13、Javaweb阶段包括前端、数据库和动态网页。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础。

14、首先,我们先看一下前端板块。该板块主要包括如下几个模块:

15、JavaScript,嵌入在页面中的脚本语言,具备逻辑性;

16、Vue,前端框架,简化了与服务器端交互的操作,用户良好的交互体验是必不可少的。

17、学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。

18、动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的。

19、该板块包括Javaweb核心技术、包括Servlet、Request、Response、Cookie和Session等,通过这些技术的学习可以完成动态站点开发,可更好的完成服务器端与客户的交互,让页面的数据“动”起来,做出小型的应用系统。

20、编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强,对后期自动以框架和对一些服务框架的底层理解做支撑。

21、编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率。

22、学习该阶段,可以对原有项目进行优化从而使程序更快更稳定。

23、JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

24、在Java基础板块中有6个子模块的学习:基础语法,可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程,应用服务器学习基础,完成数据的远程传输。

25、学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。

26、使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。

27、热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。

28、该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求。

29、随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。

30、主要包括如下模块:Dubbo,高性能的 RPC服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。

31、该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础

32、中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。

33、学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术。

34、不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器。

35、该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷!

36、容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率。该板块包括容器化技术Docker和其平台管理引擎Kubernetes,其中,Docker是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。而Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。通过该板块的学习,你可以通过上述技术快速搭建环境,节省开发时间,提高开发效率。

37、虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案。通过分析实际业务来学习这个解决方案技术集,完全可以达到中级甚至高级工程师水平。