| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> hadoop三种模式搭建安装-vbox-openEuler、centos -> 正文阅读 |
|
[大数据]hadoop三种模式搭建安装-vbox-openEuler、centos |
目录 关闭集群:[root@vm01-openEuler package]# shutdown -h now 首先复制生成四台机器1个namenode,2个DataNode(完全分布式),1个kerberos kdc 注意在完成第一台节点的安装后进行复制,而不是环境搭建完在复制。 ? ?由于剩余三台机器都是由第一台复制出来的,所以主机名、密码以及IP地址都是相同的,在这里我们逐个修改。 登录进去后:vi /etc/hostname 修改四个节点的主机名,为了后续方便,在这里我将vm01、vm02、vm03更改为hadoop01、hadoop02、hadoop03。 修改网关: cd /etc/sysconfig/network-scripts/ ?这里我将hadoop01网关设置为192.168.56.210;hadoop02:192.168.56.220;hadoop03:192.168.56.230;kerberos:192.168.56.240 然后对四台机器进行重启:reboot 结果展示如下: hadoop01: ?hadoop02: hadoop03: ?kerberos: Hadoop2.8 单机模式安装1 Hadoop安装模式概述Hadoop的三种安装模式: 1.单机模式【本地模式Local (Standalone) Mode】
2.伪分布式模式【Pseudo-Distributed Mode,英 ['sju?d??]美 ['su?do?]】
?3.完全分布式模式【Fully-Distributed Mode】
2 软件准备
3 Hadoop2.8单机模式安装过程Task 1 安装JDKStep 1 使用ssh工具连接到虚拟机 虚拟机ip:192.168.56.200 Step 2 上传JDK到用户home目录 将下载好的linux版本的jdk通过MobaXterm工具拖放到用户home目录下的package,新建package文件夹,此处root的home目录是/root,即root/package: Step 3 解压jdk tar zxvf jdk-8u241-linux-x64.tar.gz 解压完成: Step 4 将JDK移到安装位置 mv jdk1.8.0_241/ /usr/local/ 移到完成: Step 5 配置环境变量 vi /etc/profile 在文件结尾处添加:
运行结果: 保存退出。 Step 6 使配置生效,并验证jdk source /etc/profile java -version 运行结果: Task 2 安装HadoopStep 1 上传hadoop安装包至/root/package目录 通过MobaXterm工具将下载的hadoop安装包拖放至用户/root/package目录: Step 2 解压hadoop安装包 tar zxvf hadoop-2.8.5.tar.gz 运行结果: Step 3 将hadoop移到安装位置 mv hadoop-2.8.5 /opt ?运行结果: 注意: Linux?的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
Step 4 设置hadoop环境变量 vi /etc/profile 将Hadoop可执行文件添加到PATH变量中(可执行文件分别位于bin和sbin下),在profile文件结尾添加如下内容: export HADOOP_HOME=/opt/hadoop-2.8.5 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 运行结果: 保存退出。 Step 5 使环境变量生效 source /etc/profile Step 6 设置Hadoop使用的JDK hadoop配置文件通常位于hadoop安装目录的etc/hadoop下面: 编辑hadoop-env.sh文件: vi /opt/hadoop-2.8.5/etc/hadoop/hadoop-env.sh 修改JAVA_HOME一行: 将其替换为实际的java安装位置: JAVA_HOME=/usr/local/jdk1.8.0_241 修改后文件: 保存退出。
Step 7 验证Hadoop安装 1)使用hadoop可以查看帮助: 2)查看Hadoop版本 hadoop version 运行结果: 3)单词统计测试 $ mkdir input ? $ cp /opt/hadoop-2.8.5/etc/hadoop/*.xml input hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output ? 运行过程: ?$ cat output/* 单词统计结果:
?测试完成后切换到root目录,进行删除input和output文件夹 [root@hadoop01 ~]# rm -rf input/ 4 安装总结
资源参考单点模式安装:Apache Hadoop 2.10.1 – Hadoop: Setting up a Single Node Cluster. Hadoop2.8 伪分布模式安装1 Hadoop2.8伪分布模式安装过程在前面完成hadoop单点模式安装的基础上进行下面的安装过程。 Task 1 节点准备Step 1 关闭防火墙 执行如下命令关闭防火墙: systemctl stop firewalld systemctl disable firewalld Step 2 配置ssh免密 如果输入如下命令: ssh localhost 出现类似下面询问密码的情形,那么我们需要配置免密登陆ssh。 1)生成公钥和私钥 ssh-keygen -t rsa 一路回车即可: ? 生成的公钥和私钥文件保存在当前用户home目录的.ssh目录下: 其中id_rsa为私钥,id_rsa.pub为公钥。 2)将公钥添加到ssh授信列表文件中 运行如下命令: cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 新创建的authorized_keys文件和下面类似: 3)验证ssh免密配置是否成功: 再次执行如下命令: ssh localhost 执行效果如下,已经不再需要输入密码。
Task 2 HDFS安装配置Step 1 配置HDFS hadoop配置文件位于hadoop安装目录的etc/hadoop下: 1)配置core-site.xml文件: 使用vi编辑core-site.xml文件:
在文件中的添加如下内容:
?修改后的文件如下:
2)配置hdfs-site.xml文件 用vi编辑hdfs-site.xml文件: vi /opt/hadoop-2.8.5/etc/hadoop/hdfs-site.xml 添加如下内容: <configuration> ? ?<property> ? ? ? ?<name>dfs.replication</name> ? ? ? ?<value>1</value> ? ?</property> </configuration> 最终文件如下:
Step 2 格式化HDFS系统 运行如下命令: hdfs namenode -format 出现如下信息,表示hdfs格式化成功: 注意:根据前面core-site.xml文件中的配置,hdfs系统位于/opt/hadoop安装目录/tmp目录下。 Step 3 启动HDFS 通过以下命令启动NameNode和DataNode进程: start-dfs.sh 运行结果:
通过jps可以查看hadoop启动后的java进程,如果包含SecondaryNameNode、DataNode和NameNode3个进程表示启动成功,其中SecondaryNameNode又叫检查节点。如果进程没有完全启动,请查看hadoop启动日志。 ? Step 4 验证hdfs系统 1)可以通过浏览器访问NameNode的web界面:
注意,此处ip为虚拟机上安装hadoop伪分布机器的ip。如果该页面无法访问,需要注意防火墙关闭步骤是否漏掉,执行如下命令重新关闭防火墙: 关闭防火墙 systemctl stop firewalld 开机禁用防火墙 systemctl disable firewalld 关闭防火墙执行效果: ? 2)验证MapReduce功能 1.在hdfs上创建文件夹: hdfs dfs -mkdir /user hdfs dfs -mkdir /user/root 执行效果: 2.上传统计文件到hdfs hdfs dfs -put /opt/hadoop-2.8.5/etc/hadoop/ input 执行效果:
3.执行单词统计 hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output 执行效果: 4.查看统计结果: [root@hadoop01 ~]# hdfs dfs -get output output [root@hadoop01 ~]# cat output/* 输出结果:
测试完成后删除目录及结果: [root@hadoop01 ~]# hdfs dfs -rm -r /user ?5.如需停止hdfs可以使用脚本:stop-dfs.sh Task 3 YARN安装配置前面在验证hadoop安装时所运行的mapreduce任务是基于本地运行,没有YARN参与,通常情况下,我们需要在YARN调度下运行MapReduce,此时我们需要额外配置ResourceManager和NodeManager进程。 YARN在伪分布模式的安装过程如下: Step 1 配置YARN 1)配置mapred-site.xml文件 1.复制出mapred-site.xml文件 cp /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml.template /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml 2.使用vi添加如下内容: vi /opt/hadoop-2.8.5/etc/hadoop/mapred-site.xml 注意仅添加property标签部分: <configuration> ? <property> ? ? ? <name>mapreduce.framework.name</name> ? ? ? <value>yarn</value> ? </property> </configuration> 最终文件和如下类似: 2)配置yarn-site.xml文件 使用vi编辑yarn-site.xml文件: vi /opt/hadoop-2.8.5/etc/hadoop/yarn-site.xml 添加如下内容: <configuration> ? <property> ? ? ? <name>yarn.nodemanager.aux-services</name> ? ? ? <value>mapreduce_shuffle</value> ? </property> </configuration> 同样仅添加property标签中的内容,最终文件和下面类似: Step 2 启动YARN 使用如下命令启动ResourceManager和NodeManager进程: start-yarn.sh 启动完成: ?注意,启动日志位于/opt/hadoop安装目录/logs下面。 Step 3 验证YARN 1)使用jps命令查看启动进程: 会出现ResourceManager和NodeManager进程。 2)访问ResoureManager的web界面: 网页显示如下: 此时一个完整的hadoop伪分布式模式已经安装完成,你可以像前面一样运行wordcount程序,此时将使用YARN作为mapreduce 作业调度框架。 如需关闭hadoop集群执行如下脚本: stop-dfs.sh stop-yarn.sh 2 安装总结
3 附录1)单点模式安装:Apache Hadoop 2.10.1 – Hadoop: Setting up a Single Node Cluster. 2)Hadoop2.x常见web端口:
3)Hadoop2.x常见端口 Hadoop、Hive、Hbase常用端口大全_zp17834994071的博客-CSDN博客_hbase 端口 3)Hadoop各版本下载链接: Hadoop2.8 完全分布式安装1 安装概述此安装过程在伪分布安装的基础上继续安装,如果没有进行伪分布式安装,需要参考伪分布安装过程进行适当调整。 2 节点规划
3 节点准备Step 1 准备虚拟机1)准备3台虚拟机 3台虚拟机设置好固定IP地址,如果已经按伪分布方式安装了hadoop,则需要另外再准备2台虚拟机,并将这2台虚拟机设置好固定ip地址。3台虚拟机可以互相ping通。 2)修改主机名 在第一台机器(192.168.56.210)上执行如下命令 vi /etc/hostname 修改成如下图: 3)修改hosts文件 在第一台机器上运行如下命令: vi /etc/hosts 按dd删除原有内容,然后添加如下内容: 192.168.56.210 ?hadoop01 192.168.56.220 ?hadoop02 192.168.56.230 ?hadoop03 编辑后的内容如下: 4)关闭防火墙 各个节点的防火墙都应关闭,运行如下命令: systemctl stop firewalld systemctl disable firewalld
修改其他节点 在第2~3台虚拟机上执行第2~4步完成各节点的主机名、hosts文件的修改以及关闭防火墙操作。 5)重启使配置生效 reboot 重启完成后,登陆到系统,从shell提示符中,确认主机名是否修改: Step 2 配置SSH免密为了各节点间不必输入密码登录各服务器,需要配置3台服务器互信,也就是ssh的免密钥登录。 1)在hadoop01节点上执行 [root@hadoop01 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:So79o8ZpwJChdAdSS1VyxD6jgfnVLcN33GY5NaT7aTo root@hadoop01 The key's randomart image is: +---[RSA 2048]----+ | ..+oo++ ? ? ?.. | | .+...o. ? ? ?...| |...++ . o . ... +| |. oo . = = o o.* | | ? o. = S + ..o .| | ? ?oB . ? ? ?. .| | ? ?.o+. ? ? ? + | | ? ? ?=.. ? ?Eo ?| | ? ? o.... ? .. ?| +----[SHA256]-----+
生成的公钥和私钥: id_rsa为私钥,id_rsa_pub为公钥 同样通过ssh登陆到hadoop02及hadoop03完成密钥生成操作,操作完成后,注意检查两个密钥文件是否存在。 2)收集各节点公钥生成授信列表文件(authorized_keys) 分别在hadoop01~03上运行如下命令: cat /root/.ssh/id_rsa.pub 分别将cat命令显示的内容拷贝到一个临时的记事本当中,以下是搜集起来的3条公钥: ?ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDi/HaA9aXUgYcqD/N4oVSlp+Wmex44b/k4V23PXOU6wbnptq6FXvoz86Bp3+wQ3aafxpCYP2NZ2IxeyDNK2DyDFvpXYeSteRydazB2+ICHAmMwXzv5a2MFEAiEqOTuUJ4gbOd3st9M53VVE0Ukz9I+4JCYalFsxxxzfWAUGYLbMqiHjPulY2Iy7ib3JvpkEv/5DpPtcnxgaiAty2LDdMe7lcd8aAfCaMpVDUxB/YCptQBKCJtEmTJfBPVIVjnO4T9bUmzC96GjQBqolPI9TAT/a5bQ8fjlZ57UDlHWbuiOFeJ8ZWpNkn564z8dyfFWduSyy8IkDe3D14MOQB4j5Zlp root@hadoop01 上面的文件就是3台机器的公钥内容。需要把这些内容放到每台机器的authorized_keys文件中(默认和密钥对在同一个文件夹中,如不存在,需要自己建立)。 首先在hadoop01节点上通过如下命令建立受信列表文件: [root@hadoop01 ~]# vi /root/.ssh/authorized_keys 将前面收集的内容拷贝到vi编辑器中,并保存退出:
3)将authorized_keys分发到其他节点 在hadoop01上执行如下命令,将authorized_keys文件远程拷贝到hadoop02和hadoop03节点: scp /root/.ssh/authorized_keys root@hadoop02:/root/.ssh/authorized_keys scp /root/.ssh/authorized_keys root@hadoop03:/root/.ssh/authorized_keys
4)验证免密设置 在每个节点上运行ssh命令,确保各个节点间不需要输入密码,第一次访问其他主机可能需要输入yes,运行结果与下图类似: 在这里遇到如下问题:
使用远程拷贝命令传到hadoop02、hadoop03节点 [root@hadoop01 ~]# ?scp /etc/hosts root@hadoop02:/etc/hosts Step 3 准备JDK如果已经在hadoop01上完成了伪分布式安装,则此时已经装有jdk,只需要将jdk和环境变量分发到集群中的其他节点,如果没有在hadoop01上完成伪分布式安装,此处需要安装伪分布安装文档中关于jdk安装部分,安装及配置jdk。 此文档假设你已经在hadoop01上完成了伪分布式安装,下面的操作仅进行jdk机器配置的分发: 1)分发jdk 在hadoopnode1上执行如下命令: scp -r /usr/local/jdk1.8.0_241/ root@hadoop02:/usr/local/ scp -r /usr/local/jdk1.8.0_241/ root@hadoop03:/usr/local/
2)分发环境变量配置 在hadoop01上执行如下命令: scp /etc/profile root@hadoop02:/etc/ scp /etc/profile root@hadoop03:/etc/ 拷贝完成后,无需执行source命令,配置在下次ssh登陆时自动生效。 3)检查jdk是否可用 分别通过ssh命令登陆到hadoop02及hadoop03节点,运行java -version命令检查java版本: 4 Hadoop集群安装Step 1 在单节点上安装配置Hadoop1)在hadoop01上安装hadoop 本文档假设你已经在hadoop01上完成伪分布式安装,如果没有完成该步骤你需要将Hadoop安装包上传到hadoop01节点,并将其解压,移到到/opt目录下,具体操作参考伪分布式安装文档。 2)配置hadoop所使用的JDK 如果你已完成伪分布式安装,此步骤可以省略,否则需要编辑hadoop-env.sh文件正确设置jdk安装位置。 3)编辑core-site.xml文件 如果已完成伪分布安装,需要修改该配置文件,将配置中的localhost换成实际的namenode节点主机名: vi /opt/hadoop-2.8.5/etc/hadoop/core-site.xml 配置如下: <configuration> ? <property> ? ? ? <name>fs.defaultFS</name> ? ? ? <value>hdfs://hadoop01:9000</value> ? </property> ? <property> ? ? ? <name>hadoop.tmp.dir</name> ? ? ? <value>/opt/hadoop-2.8.5/tmp</value> ? ? ? </property> </configuration> 最终文件内容和如下类似:
4)编辑hdfs-site.xml文件 使用vi编辑hdfs-site.xml文件,将复制因子修改为2(因为只规划了2个DataNode): vi /opt/hadoop-2.8.5/etc/hadoop/hdfs-site.xml 修改后内容如下: <configuration> ? <property> ? ? ? <name>dfs.replication</name> ? ? ? <value>2</value> ? </property> </configuration> 修改结果: 5)编辑yarn-site.xml文件 vi /opt/hadoop-2.8.5/etc/hadoop/yarn-site.xml 添加resourcemanager主机名,最终内容和下面类似: <configuration> ? <!-- Site specific YARN configuration properties --> ? ?<property> ? ? ? ?<name>yarn.nodemanager.aux-services</name> ? ? ? ?<value>mapreduce_shuffle</value> ? ?</property> ? ?<property> ? ? ? ?<name>yarn.resourcemanager.hostname</name> ? ? ? ?<value>hadoopnode1</value> ? ?</property> </configuration> 修改后的结果: 6)编辑mapred-site文件 mapred-site文件和伪分布一样,无需做出修改,如果没有按伪分布安装,则需要拷贝出此文件,添加如下配置: <property> ? ? ? ?<name>mapreduce.framework.name</name> ? ? ? ?<value>yarn</value> ? ?</property> ?? 7)编辑slaves文件 此处和伪分布安装不同,需要在slaves中删除localhost,并添加实际的DataNode节点。 使用vi编辑slaves文件: vi /opt/hadoop-2.8.5/etc/hadoop/slaves 删除原有的localhost,修改成如下内容: hadoop02 hadoop03 修改后的结果: 8)设置hadoop环境变量 修改/etc/profile文件,设置hadoop环境变量,如果已完成伪分布式安装,此文件无需修改,如未完成安装需在此文件末尾添加hadoop环境变量,并使用source使环境变量生效: export HADOOP_HOME=/opt/hadoop-2.8.5 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 最终的/etc/profile文件: Step 2 分发Hadoop1)清理伪分布安装的hdfs 如果从伪分布模式基础上进行的安装,因为伪分布已经启动过,此时hdfs系统有残留,在分发hadoop前,需要清理tmp文件夹,在namenode节点运行如下命令: cd /opt/hadoop-2.8.5 rm -rf tmp 如果是全新安装,可以忽略此步 2)将hadoop01上的hadoop安装内容分发到各节点 在hadoop01上执行如下命令: scp -r /opt/hadoop-2.8.5/ root@hadoop02:/opt scp -r /opt/hadoop-2.8.5/ root@hadoop03:/opt 3)将/etc/profile文件分发到各节点 如果在伪分布阶段已在/etc/profile文件中添加了hadoop环境变量,此处已经在前面安装jdk时分发过了,此处可以忽略。 后面的格式化及验证过程,基本上和伪分布式相同。 Step 3 格式化namenode执行如下命令格式化namenode节点: hdfs namenode -format 出现如下信息表示格式化成功:
Step 4 验证Hadoop1)启动HDFS 运行如下命令启动hdfs: start-dfs.sh 运行结果:
?在NameNode节点运行jps会看到如下进程: 分别在DataNode节点运行jps会看到如下进程:
2) 启动yarn 在hadoopnode1上运行如下命令: start-yarn.sh 启动完成: 此时resourcemanager和nodemanager会分别启动,各自日志也在/opt/hadoop安装目录/logs下面,如有问题可以查看日志进行排查。 在hadoop01上运行jps会找打resourcemanager进程;分别在hadoop02和hadoop03上面运行jps会找到nodemanager进程: 3)访问web界面 1.NameNode的web界面: 2.yarn(resourceManager)的web界面:
4)验证mapreduce功能 该部分和伪分布安装中的验证mapreduce功能类似,此处仅简单描述。
hdfs dfs -mkdir /user hdfs dfs -mkdir /user/root
hdfs dfs -put /opt/hadoop-2.8.5/etc/hadoop/ input
1.执行单词统计 hadoop jar /opt/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output 2.查看结果 hdfs dfs -get output output cat output/*
stop-dfs.sh stop-yarn.sh
5 附录5.1 其他参考
5.2 FAQQ1:DataNode无法注册数据块,通常会提示如下错误: 2021-11-08 09:34:53,595 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace: java.lang.Exception A:大多数是datanode上的数据块无法在namenode上注册失败导致,可以通过以下步骤解决问题:
Q2: 在执行hdfs -put操作时,无法像hdfs上传文件,提示有datanode节点被排除。 WARN hdfs.DataStreamer: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/root/input/mapred-env.cmd.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and 2 node(s) are excluded in this operation. A:大致意思是说,有2个datanode节点在运行,但是在复制文件时被排除在外,原因很可能是节点间datanode节点无法联系到namenode节点,你需要检查: 1 )各个节点防火墙是否关闭 可以在各节点执行防火墙关闭命令: systemctl stop firewalld systemctl disable firewalld 2 )datanode节点上core-site.xml中namenode主机名是否配置错误。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:07:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |