当前位置: 首页 > 综合 >

大数据必知必会:Hadoop(3)集群环境安装

2023-02-10 03:04:31 来源:腾讯云

安装前准备

集群环境下,至少需要3台服务器。

IP地址

主机名称


(资料图片仅供参考)

10.0.0.5

node1

10.0.0.6

node2

10.0.0.7

node3

需要保证每台服务器的配置都一致,以下步骤在3台服务器上都需要做一次。

操作系统准备

本次安装采用的操作系统是Ubuntu 20.04。

更新一下软件包列表。

sudo apt-get update

安装Java 8+

使用命令安装Java 8。

sudo apt-get install -y openjdk-8-jdk

配置环境变量。

vi ~/.bashrcexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

让环境变量生效。

source ~/.bashrc

下载Hadoop安装包

从Hadoop官网Apache Hadoop下载安装包软件。

image-20230120200957218

或者直接通过命令下载。

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
image-20230122004400490

分布式集群安装

分布式集群是在多个节点上运行进程来实现Hadoop集群。

配置域名解析

在后续使用过程中,都使用主机名称,所以需要配置域名解析。

配置 /etc/hosts

由于该配置文件的修改需要root权限,所以在每个节点上都手动配置。

10.0.0.5 node110.0.0.6 node210.0.0.7 node3

以下配置过程在node1上完成,并且配置完成后将配置文件复制到其他节点。

配置免密登录

Hadoop分布式集群的运行,需要配置密钥对实现免密登录。

创建公私钥对
hadoop@node1:~$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsaYour public key has been saved in /home/hadoop/.ssh/id_rsa.pubThe key fingerprint is:SHA256:pp2AC1bQAQ5J6CJJCij1QA7bgKOsVxpoPVNi+cxhcyg hadoop@node1The key"s randomart image is:+---[RSA 3072]----+|O=*oo..          ||OX E.* .         ||X+* @ +          ||B+.=.=           ||= o++ . S        ||..o. . = .       || .  . . o        ||                 ||                 |+----[SHA256]-----+
复制公钥
hadoop@node1:~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
复制到其他节点
hadoop@node1:~$ scp -r .ssh node1:~/id_rsa.pub                                   100%  566     1.7MB/s   00:00    authorized_keys                              100%  566     2.0MB/s   00:00    known_hosts                                  100% 1332     4.5MB/s   00:00    id_rsa                                       100% 2602    10.1MB/s   00:00    hadoop@node1:~$ scp -r .ssh node2:~/hadoop@node2"s password: id_rsa.pub                                   100%  566   934.6KB/s   00:00    authorized_keys                              100%  566   107.3KB/s   00:00    known_hosts                                  100% 1332     2.5MB/s   00:00    id_rsa                                       100% 2602     4.8MB/s   00:00    hadoop@node1:~$ scp -r .ssh node3:~/hadoop@node3"s password: id_rsa.pub                                   100%  566     1.0MB/s   00:00    authorized_keys                              100%  566     1.3MB/s   00:00    known_hosts                                  100% 1332     2.8MB/s   00:00    id_rsa                                       100% 2602     5.2MB/s   00:00    

确保执行ssh命令的时候不需要输入密码。

hadoop@node1:~$ ssh node1hadoop@node1:~$ ssh node2hadoop@node1:~$ ssh node3

解压安装包

将安装包解压到目标路径。

hadoop@node1:~$ mkdir -p appshadoop@node1:~$ tar -xzf hadoop-3.3.4.tar.gz -C apps
image-20230122005658601

bin目录下存放的是Hadoop相关的常用命令,比如操作HDFS的hdfs命令,以及hadoop、yarn等命令。

etc目录下存放的是Hadoop的配置文件,对HDFS、MapReduce、YARN以及集群节点列表的配置都在这个里面。

sbin目录下存放的是管理集群相关的命令,比如启动集群、启动HDFS、启动YARN、停止集群等的命令。

share目录下存放了一些Hadoop的相关资源,比如文档以及各个模块的Jar包。

配置环境变量

在集群的每个节点上都配置Hadoop的环境变量,Hadoop集群在启动的时候可以使用start-all.sh一次性启动集群中的HDFS和Yarn,为了能够正常使用该命令,需要将其路径配置到环境变量中。

hadoop@node1:~$ vi ~/.bashrcexport HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.4export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoopexport YARN_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoopexport PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使环境变量生效。

hadoop@node1:~$ source ~/.bashrc

配置Hadoop集群

Hadoop软件安装完成后,每个节点上的Hadoop都是独立的软件,需要进行配置才能组成Hadoop集群。Hadoop的配置文件在$HADOOP_HOME/etc/hadoop目录下,主要配置文件有6个:

hadoop-env.sh主要配置Hadoop环境相关的信息,比如安装路径、配置文件路径等;core-site.xml是Hadoop的核心配置文件,主要配置了Hadoop的NameNode的地址、Hadoop产生的文件目录等信息;hdfs-site.xml是HDFS分布式文件系统相关的配置文件,主要配置了文件的副本数、HDFS文件系统在本地对应的目录等;mapred-site.xml是关于MapReduce的配置文件,主要配置MapReduce在哪里运行;yarn-site.xml是Yarn相关的配置文件,主要配置了Yarn的管理节点ResourceManager的地址、NodeManager获取数据的方式等;workers是集群中节点列表的配置文件,只有在这个文件里面配置了的节点才会加入到Hadoop集群中,否则就是一个独立节点。

这几个配置文件如果不存在,可以通过复制配置模板的方式创建,也可以通过创建新文件的方式创建。需要保证在集群的每个节点上这6个配置保持同步,可以在每个节点单独配置,也可以在一个节点上配置完成后同步到其他节点。

hadoop-env.sh配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/hadoop-env.shexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export HADOOP_HOME=/home/hadoop/apps/hadoop-3.3.4export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-3.3.4/etc/hadoopexport HADOOP_LOG_DIR=/home/hadoop/logs/hadoop

core-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/core-site.xml          fs.defaultFS      hdfs://node1:8020              hadoop.tmp.dir      /home/hadoop/data/hadoop/temp              hadoop.proxyuser.hadoop.hosts      *              hadoop.proxyuser.hadoop.groups      *    

hdfs-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml            dfs.replication        3              dfs.namenode.name.dir      /home/hadoop/data/hadoop/hdfs/name              dfs.datanode.data.dir      /home/hadoop/data/hadoop/hdfs/data    

mapred-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/mapred-site.xml            mapreduce.framework.name        yarn                mapreduce.application.classpath        $HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*    

yarn-site.xml配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/yarn-site.xml          yarn.nodemanager.aux-services      mapreduce_shuffle                  yarn.resourcemanager.hostname        node1    

workers配置

hadoop@node1:~$ vi $HADOOP_HOME/etc/hadoop/workersnode1node2node3

将软件及配置信息复制到其他节点

在node1上配置好环境变量及配置文件,可以手动再在其他节点上完成同样的配置,或者直接将node1的文件复制到其他节点。

hadoop@node1:~$ scp -r .bashrc apps node2:~/hadoop@node1:~$ scp -r .bashrc apps node3:~/

格式化NameNode

在启动集群前,需要对NameNode进行格式化,在node1上执行以下命令:

hadoop@node1:~$ hdfs namenode -format

启动集群

在node1上执行start-all.sh命令启动集群。

hadoop@node1:~$ jps55936 Jpshadoop@node1:~$ start-all.shWARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.WARNING: This is not a recommended production deployment configuration.WARNING: Use CTRL-C to abort.Starting namenodes on [node1]Starting datanodesnode2: WARNING: /home/hadoop/logs/hadoop does not exist. Creating.node3: WARNING: /home/hadoop/logs/hadoop does not exist. Creating.Starting secondary namenodes [node1]WARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.Starting resourcemanagerWARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.Starting nodemanagersWARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.node3: WARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.node2: WARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.node1: WARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.hadoop@node1:~$ jps57329 ResourceManager57553 NodeManager57027 SecondaryNameNode58165 Jps56437 NameNode56678 DataNode

验证Hadoop

访问HDFS

上传一个文件到HDFS。

hdfs dfs -put .bashrc /

打开HDFS Web UI查看相关信息,默认端口9870。

image-20230122011646516
image-20230122011729528
image-20230122011803241

访问YARN

打开YARN Web UI查看相关信息,默认端口8088。

image-20230122011843198

相关命令

HDFS相关的命令

操作HDFS使用的命令是hdfs,命令格式为:

Usage: hdfs [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]

支持的Client命令主要有:

Client Commands:classpath            prints the class path needed to get the hadoop jar and the required librariesdfs                  run a filesystem command on the file systemenvvars              display computed Hadoop environment variablesfetchdt              fetch a delegation token from the NameNodegetconf              get config values from configurationgroups               get the groups which users belong tolsSnapshottableDir   list all snapshottable dirs owned by the current usersnapshotDiff         diff two snapshots of a directory or diff the current directory contents with a snapshotversion              print the version

YARN相关的命令

操作HDFS使用的命令是yarn,命令格式为:

Usage: yarn [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or    yarn [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]  where CLASSNAME is a user-provided Java class

支持的Client命令主要有:

Client Commands:applicationattempt   prints applicationattempt(s) reportapp|application      prints application(s) report/kill application/manage long running applicationclasspath            prints the class path needed to get the hadoop jar and the required librariescluster              prints cluster informationcontainer            prints container(s) reportenvvars              display computed Hadoop environment variablesfs2cs                converts Fair Scheduler configuration to Capacity Scheduler (EXPERIMENTAL)jar             run a jar filelogs                 dump container logsnodeattributes       node attributes cli clientqueue                prints queue informationschedulerconf        Updates scheduler configurationtimelinereader       run the timeline reader servertop                  view cluster informationversion              print the version

yarn jar 可以执行一个jar文件。

验证案例1,统计含有“dfs”的字符串

创建一个input目录。

hadoop@node1:~$ hdfs dfs -mkdir /input

将Hadoop的配置文件复制到input目录下。

hadoop@node1:~$ hdfs dfs -put apps/hadoop-3.3.4/etc/hadoop/*.xml /input/

以下命令用于执行一个Hadoop自带的样例程序,统计input目录中含有dfs的字符串,结果输出到output目录。

hadoop@node1:~$ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep /input /output "dfs[a-z.]+"
image-20230122012114789

在YARN上可以看到提交的Job。

image-20230122012159358

执行结果为:

hadoop@node1:~$ hdfs dfs -cat /output/*1       dfsadmin1       dfs.replication1       dfs.namenode.name.dir1       dfs.datanode.data.dir
验证案例2,计算圆周率

同样执行Hadoop自带的案例,计算圆周率。

hadoop@node1:~$ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 10 10

执行结果为:

hadoop@node1:~$ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 10 10WARNING: YARN_CONF_DIR has been replaced by HADOOP_CONF_DIR. Using value of YARN_CONF_DIR.Number of Maps  = 10Samples per Map = 10Wrote input for Map #0Wrote input for Map #1Wrote input for Map #2Wrote input for Map #3Wrote input for Map #4Wrote input for Map #5Wrote input for Map #6Wrote input for Map #7Wrote input for Map #8Wrote input for Map #9Starting Job... ...Job Finished in 43.014 secondsEstimated value of Pi is 3.20000000000000000000

在YARN上可以看到提交的Job。

image-20230122012444050
标签: Hadoop Bash Bash
最近更新
婚姻法
央行公开市场开展2149亿元7天期逆回购操作
多哈世乒赛:林诗栋/蒯曼轻松晋级 混双8强赛将上演两场中日对决
证人翻供承担什么法律责任?民事纠纷亲戚可以作证吗?_每日头条
合同公证后怎么撤销?办理合同公证需要十五个工作日吗? 天天观焦点
手相婚姻线怎么看是二婚?手相决定一个人的婚姻吗?
中华人民共和国反家庭暴力法第二条的内容是什么?冷暴力指的都有哪些内容?
天天观察:农村宅基地怎样过户给本村人?老人去世后宅基地归谁?
行政处罚的追究时效是多久?行政处罚的方式有哪些?
公司组织结构可以分为什么?基金架构与组织结构设计的内容是什么?
不动产登记申请需要哪些材料?不动产证和房产证是一样的吗?|全球热点
知识纠纷
1 公司法人章可以随便刻吗?中华人民共和国公司法第三条的内容是什么? 天天热闻
2 什么国际贸易术语?贸易术语在国际贸易中起着积极的作用主要表现在哪几个方面?_视点
3 发现甲类传染病几小时内上报?工作期间得了传染病算不算工伤?
4 债权转让一般打几折?债权转让合法吗?
5 承揽合同纠纷的解决办法?承揽合同质保期一般多长时间?|环球看点
6 个人贷款申请的必备条件是什么?申请贷款的流程是什么?
7 拆迁引起舆情纠纷怎么办?引起征地拆迁纠纷的原因有哪些?
8 捡到东西又放回原处犯法吗?捡到东西又扔了需要赔偿吗?
公司法
诉讼离婚要交多少钱?诉讼离婚要多久才能离婚? 今日热闻
行政处罚与行政处分有什么不同?行政处罚记入档案吗?
连带责任是什么?连带责任会强制执行吗?
答辩状可以开庭时提交吗?民事诉讼答辩期限是多久?-当前短讯
分居协议怎么写?写分居协议的注意事项有哪些?
遗嘱有效期是多长时间?遗嘱变更受益人有效吗?|当前热讯
轻伤二级公证处会给受害人什么材料?轻伤二级赔了钱还要坐牢吗?_全球速读
夫妻离婚后债务应当如何处理?夫妻离婚债务分割书面协议怎么写?
盗窃拘留一般多少天?盗窃罪判几年? 全球速读
全球视讯!商标争议如何处理?驰名商标保护的期限是如何规定的?
合同法
深入推进IPv6规模部署和应用

2025-06-04

天天快看点丨缓刑是什么意思?缓刑需要坐牢吗?

2023-07-07

今日热文:一般择日宣判会很严重吗?择日宣判会提前通知吗?

2023-07-07

离婚后一方拒绝探望该怎么办?离婚拒绝探视会怎么样? 当前简讯

2023-07-07

劳务纠纷起诉费用是多少?劳务合同纠纷的诉讼费由谁承担?

2023-07-06

通谋虚假离婚有效吗?骗取离婚证是违法行为吗?

2023-07-06

劳动纠纷
深入推进IPv6规模部署和应用
天天快看点丨缓刑是什么意思?缓刑需要坐牢吗?
今日热文:一般择日宣判会很严重吗?择日宣判会提前通知吗?
离婚后一方拒绝探望该怎么办?离婚拒绝探视会怎么样? 当前简讯
劳务纠纷起诉费用是多少?劳务合同纠纷的诉讼费由谁承担?
通谋虚假离婚有效吗?骗取离婚证是违法行为吗?

法律专家版权所有 2005-2022 备案号:京ICP备2022016840号-61  联系邮箱:345 5005 708@qq.com