当前位置: 首页 > 综合 >

大数据必知必会: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
最近更新
15037178970
婚姻法
对外国法院涉及中国公民的离婚判决如何才能在中国生效呢?快来了解吧
办理涉外离婚境外授权委托书需要提供哪些材料呢?办理境外离婚授权委托书注意事项有哪些呢?
涉外离婚案件的证据如何认定呢?涉外离婚案件审理期间有什么规定呢?
夫妻双方均为留学生要求在国内离婚的怎么办呢?涉外离婚法院如何确定呢?
华侨办理结婚登记时应提交的材料有哪些呢?与华侨办理结婚证流程是什么呢?
涉外离婚孩子抚养费支付标准是什么呢?子女抚养费数额的计算要考虑哪些因素呢?
解决涉外婚姻财产纠纷的一般原则是什么呢?如何处理涉外离婚抚养权问题呢?
涉外婚姻结婚登记程序都有哪些呢?涉外婚姻登记结婚注意事项有哪些呢?
担任特定公职的人员不能与外国人结婚吗?哪些人能与外国人结婚呢?
涉外无效婚姻指的是哪些情况呢?怎样处理涉外无效婚姻呢?
知识纠纷
1 商标犯罪行为都有哪些呢?假冒注册商标案哪些情况下应予以追诉呢?
2 商标独占性指的是什么呢?商标的有效期限是如何规定的呢?
3 驰名商标应具备哪些条件呢?我国对驰名商标的保护主要表现在哪些方面呢?
4 商标注册人有哪些权利和义务呢?商标专用权都包含哪些呢?
5 文字商标审查标准是什么呢?图形商标怎样审查呢?
6 能委托一家经验丰富的商标代理注册商标吗?著名商标的申请条件是什么呢?
7 品牌命名标准您都清楚吗?品牌命名策略分享给大家吧
8 商标注册申请补正要如何进行呢?申请商标程序都有哪些呢?
公司法
公司上市的条件有哪些?公司上市有哪些流程?
公司股东信息的查询有哪些方式?股东的权利知情质询权是什么?
为什么要进行公司清算?
企业改制都有哪些方式?
外资上市的条件 是什么?境外上市外资股特点有哪些?
全民所有制企业公司改制流程是怎样的?
机关、事业单位工会会员会费缴纳标准有多少?
公司名称核准有哪些规定?新公司法简化注册登记流程的意义在哪?
分公司和子公司有什么定义?
公司改名的流程有哪些?公司改名的注意事项
合同法
合同协商解除与约定解除的区别体现在哪些方面呢?约定解除一般是单方解除吗?

2023-03-31

约定解除权的行使规则有哪些呢?合同解除权都有哪些呢?

2023-03-31

合同解除损害赔偿与合同终止损害赔偿的适用要件有什么不同呢?

2023-03-31

合同解除的情况有哪些呢?合同解除的程序有哪三种呢?

2023-03-31

解除分期付款合同需要满足哪些条件呢?合同解除时如何避免风险呢?

2023-03-31

终止合同协议书的责任承担法律是如何规定的呢?合同终止协议书模板分享给大家哦

2023-03-31

劳动纠纷
合同协商解除与约定解除的区别体现在哪些方面呢?约定解除一般是单方解除吗?
约定解除权的行使规则有哪些呢?合同解除权都有哪些呢?
合同解除损害赔偿与合同终止损害赔偿的适用要件有什么不同呢?
合同解除的情况有哪些呢?合同解除的程序有哪三种呢?
解除分期付款合同需要满足哪些条件呢?合同解除时如何避免风险呢?
终止合同协议书的责任承担法律是如何规定的呢?合同终止协议书模板分享给大家哦

法律解答网版权所有 2005-2022