千家信息网

Linux中如何部署Hadoop集群

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家分享的是有关Linux中如何部署Hadoop集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hadoop 是一个分布式系统基础架构,由Apache基金会开发
千家信息网最后更新 2025年02月01日Linux中如何部署Hadoop集群

这篇文章给大家分享的是有关Linux中如何部署Hadoop集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Hadoop 是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

一、Hadoop框架简介

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

HDFS(Hadoop Distribution File System),称为Hadoop分布式文件系统,主要特点:

HDFS最小以64MB的数据块存储文件,相比其他文件系统中的4KB~32KB分块大得多。

HDFS在时延的基础上对吞吐量进行了优化,它能够高效处理了对大文件的读请求流,但不擅长对众多小文件的定位请求

HDFS对普通的"一次写入,多次读取"的工作负载进行了优化。

每个存储节点运行着一个称为DataNode的进程,它管理着相应主机上的所有数据块。这些存储节点都由一个称为NameNode的主进程来协调,该进程运行于一台独立进程上。

与磁盘阵列中设置物理冗余来处理磁盘故障或类似策略不同,HDFS使用副本来处理故障,每个由文件组成的数据块存储在集群众的多个节点,HDFS的NameNode不断监视各个DataNode发来的报告。

1、MapReduce工作原理

客户端,提交MapReduce作业;jobtracker,协调作业的运行,jobtracker是一个java应用程序,它的主类是JobTracker;tasktracker。运行作业划分后的任务,tasktracker是一个java应用程序,TaskTracker是主类。

2、Hadoop优点

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。

高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

Hadoop官网:http://hadoop.apache.org/

二、先决条件

保持Hadoop集群每个节点配置环境一致,安装java,配置ssh。

实验环境:

Platform:xen vm

OS: CentOS 6.8

Software: hadoop-2.7.3-src.tar.gz, jdk-8u101-linux-x64.rpm

HostnameIP AddressOS versionHadoop roleNode role
linux-node1192.168.0.89CentOS 6.8Masternamenode
linux-node2192.168.0.90CentOS 6.8Slavedatenode
linux-node3192.168.0.91CentOS 6.8Slavedatenode
linux-node4192.168.0.92CentOS 6.8Slavedatenode

#把需要的软件包下载下来上传到集群的各个节点上

三、集群的构架和安装

1、Hosts文件设置

#Hadoop集群中的每个节点的hosts文件都需要修改

[root@linux-node1 ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain linux-node1192.168.0.89 linux-node1192.168.0.90 linux-node2192.168.0.91 linux-node3192.168.0.92 linux-node4

2、安装java

#提前把下载好的JDK(rpm包)上传到服务器上,然后安装

rpm -ivh jdk-8u101-linux-x64.rpmexport JAVA_HOME=/usr/java/jdk1.8.0_101/export PATH=$JAVA_HOME/bin:$PATH# java -versionjava version "1.8.0_101"Java(TM) SE Runtime Environment (build 1.8.0_101-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

3、安装hadoop

#创建hadoop用户,设置使用sudo

[root@linux-node1 ~]# useradd hadoop && echo hadoop | passwd --stdin hadoop[root@linux-node1 ~]# echo "hadoopALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers[root@linux-node1 ~]# su - hadoop[hadoop@linux-node1 ~]$ cd /usr/local/src/[hadoop@linux-node1src]$wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz[hadoop@linux-node1 src]$ sudo tar zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/ && cd /home/hadoop[hadoop@linux-node1 home/hadoop]$ sudo mv hadoop-2.7.3/ hadoop[hadoop@linux-node1 home/hadoop]$ sudo chown -R hadoop:hadoop hadoop/

#将hadoop的二进制目录添加到PATH变量,并设置HADOOP_HOME环境变量

[hadoop@linux-node1 home/hadoop]$ export HADOOP_HOME=/home/hadoop/hadoop/[hadoop@linux-node1 home/hadoop]$ export PATH=$HADOOP_HOME/bin:$PATH

4、创建hadoop相关目录

[hadoop@linux-node1 ~]$ mkdir -p /home/hadoop/dfs/{name,data}[hadoop@linux-node1 ~]$ mkdir -p /home/hadoop/tmp

#节点存储数据备份目录

sudo mkdir -p /data/hdfs/{name,data}sudo chown -R hadoop:hadoop /data/

#上述操作需在hadoop集群的每个节点都操作

5、SSH配置

#设置集群主节点免密码登陆其他节点

[hadoop@linux-node1 ~]$ ssh-keygen -t rsa[hadoop@linux-node1 ~]$ ssh-copy-id linux-node1@192.168.0.90[hadoop@linux-node1 ~]$ ssh-copy-id linux-node2@192.168.0.91[hadoop@linux-node1 ~]$ ssh-copy-id linux-node3@192.168.0.92
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

#测试ssh登录

6、修改hadoop的配置文件

文件位置:/home/hadoop/hadoop/etc/hadoop,文件名称:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、 yarn-site.xml

(1)配置hadoop-env.sh文件

#在hadoop安装路径下,进入hadoop/etc/hadoop/目录并编辑hadoop-env.sh,修改JAVA_HOME为JAVA的安装路径

[hadoop@linux-node1 home/hadoop]$ cd hadoop/etc/hadoop/[hadoop@linux-node1 hadoop]$ egrep JAVA_HOME hadoop-env.sh# The only required environment variable is JAVA_HOME.  All others are# set JAVA_HOME in this file, so that it is correctly defined on#export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=/usr/java/jdk1.8.0_101/

(2)配置yarn.sh文件

指定yran框架的java运行环境,该文件是yarn框架运行环境的配置文件,需要修改JAVA_HOME的位置。

[hadoop@linux-node1 hadoop]$ grep JAVA_HOME yarn-env.sh# export JAVA_HOME=/home/y/libexec/jdk1.6.0/export JAVA_HOME=/usr/java/jdk1.8.0_101/

(3)配置slaves文件

指定DataNode数据存储服务器,将所有的DataNode的机器的主机名写入到此文件中,如下:

[hadoop@linux-node1 hadoop]$ cat slaveslinux-node2linux-node3linux-node4

Hadoop 3种运行模式

本地独立模式:Hadoop的所有组件,如NameNode,DataNode,Jobtracker,Tasktracker都运行在一个java进程中。

伪分布式模式:Hadoop的各个组件都拥有一个单独的Java虚拟机,它们之间通过网络套接字通信。

完全分布式模式:Hadoop分布在多台主机上,不同的组件根据工作性质的不同安装在不通的Guest上。

#配置完全分布式模式

(4)修改core-site.xml文件,添加红色区域的代码,注意蓝色标注的内容

fs.default.namehdfs://linux-node1:9000io.file.buffer.size131072hadoop.tmp.dirfile:/home/hadoop/tmpAbase for other temporary directories.

(5)修改hdfs-site.xml文件

dfs.namenode.secondary.http-addresslinux-node1:9001# 通过web界面来查看HDFS状态 dfs.namenode.name.dirfile:/home/hadoop/dfs/namedfs.datanode.data.dirfile:/home/hadoop/dfs/datadfs.replication2# 每个Block有2个备份dfs.webhdfs.enabledtrue

(6)修改mapred-site.xml

这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数。

[hadoop@linux-node1 hadoop]$ cp mapred-site.xml.template mapred-site.xmlmapreduce.framework.nameyarnmapreduce.jobhistory.addresslinux-node1:10020mapreduce.jobhistory.webapp.addresslinux-node1:19888

(7)配置节点yarn-site.xml

#该文件为yarn架构的相关配置

mapred.child.java.opts-Xmx400mjobs can include JVM debuggung options -->yarn.nodemanager.aux-servicesmapreduce_shuffleyarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandleryarn.resourcemanager.addresslinux-node1:8032yarn.resourcemanager.scheduler.addresslinux-node1:8030yarn.resourcemanager.resource-tracker.addresslinux-node1:8031yarn.resourcemanager.admin.addresslinux-node1:8033yarn.resourcemanager.webapp.addresslinux-node1:8088yarn.nodemanager.resource.memory-mb8192

7、复制hadoop到其他节点

scp -r /home/hadoop/hadoop/ 192.168.0.90:/home/hadoop/scp -r /home/hadoop/hadoop/ 192.168.0.91:/home/hadoop/scp -r /home/hadoop/hadoop/ 192.168.0.92:/home/hadoop/

8、在linux-node1使用hadoop用户初始化NameNode

/home/hadoop/hadoop/bin/hdfs namenode –format
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务
#echo $?#sudo yum –y install tree# tree /home/hadoop/dfs
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

9、启动hadoop

/home/hadoop/hadoop/sbin/start-dfs.sh/home/hadoop/hadoop/sbin/stop-dfs.sh
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

#namenode节点上面查看进程

ps aux | grep --color namenode
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

#DataNode上面查看进程

ps aux | grep --color datanode

10、启动yarn分布式计算框架

[hadoop@linux-node1 .ssh]$ /home/hadoop/hadoop/sbin/start-yarn.sh starting yarn daemons

#NameNode节点上查看进程

ps aux | grep --color resourcemanager

#DataNode节点上查看进程

ps aux | grep --color nodemanager

注:start-dfs.sh和start-yarn.sh这两个脚本可用start-all.sh代替

/home/hadoop/hadoop/sbin/stop-all.sh/home/hadoop/hadoop/sbin/start-all.sh
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

11、启动jobhistory服务,查看mapreduce状态

#在NameNode节点上

[hadoop@linux-node1 ~]$ /home/hadoop/hadoop/sbin/mr-jobhistory-daemon.sh start historyserverstarting historyserver, logging to /home/hadoop/hadoop/logs/mapred-hadoop-historyserver-linux-node1.out

12、查看HDFS分布式文件系统状态

/home/hadoop/hadoop/bin/hdfs dfsadmin –report
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

#查看文件块组成,一个文件由那些块组成

/home/hadoop/hadoop/bin/hdfs fsck / -files -blocks
实战CentOS系统部署Hadoop集群服务实战CentOS系统部署Hadoop集群服务

13、web页面查看hadoop集群状态

查看HDFS状态:http://192.168.0.89:50070/ 查看Hadoop集群状态:http://192.168.0.89:8088/

感谢各位的阅读!关于"Linux中如何部署Hadoop集群"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

集群 文件 系统 节点 服务 实战 数据 配置 分布式 运行 进程 存储 框架 状态 处理 任务 模式 环境 用户 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 c软件开发模型 文件服务器或时间机器备份地址 app 安卓编程软件开发 网络安全维护难度大怎么解决 辽宁省网络安全通讯管理员 深圳市崛起网络技术有限公司 湖北创新网络技术服务代理品牌 服务器下的文件怎么做防护 宣聚铭网络安全 成航实训报告网络安全知识内容 软件开发类工作要c语言二级吗 网络安全问题的总结 政府治理视角下的网络安全 山西葫芦娃网络技术有限 dns服务器没有信号 枣庄高校党建软件开发电话 服务器多重网络连接安全吗 软件开发工具包是什么 澳大利亚迪肯大学网络安全专业 疫情信息网络技术建设 软件开发主管职责面试 法治江西网络安全法专场题库 服务器芯片至强 连接数据库的为什么叫连接池 软件开发类工作要c语言二级吗 网络安全猜数字 服务器在线人数 查找多个表格的数据库 阿里云盘怎么做成云服务器 vb 数据库 excel
0