| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hadoop的安装部署 -> 正文阅读 |
|
[大数据]Hadoop的安装部署 |
1 本地模式搭建1.1 本地模式介绍
?1.2 平台软件说明
1.3 环境搭建1.3.1 JDK的安装1. 检查是否已经安装过或是否有内置的JDK,如果有,将其卸载 # 卸载之前的原因,主要是需要保证安装的JDK版本的正确性。
2. 上传jdk1.8到指定路径 使?MobaXterm或者FinalShell直接上传即可,上传到 /root/softwares 下 3. 解压jdk到/usr/local/下
4. 更名操作 # 更改名字,是为了后续时候的时候?便,不?再写后?的版本号
5. 配置环境变量
6. 重新引导,使得环境变量?效
7. 验证,验证自己的Java环境是否搭建完成
1.3.2 Hadoop的安装1. 上传Hadoop到Linux 使?MobaXterm或者FinalShell上传到 /root/softwares 下即可 2. 解压
3.?配置Hadoop的环境变量
4.重新引导,使得环境变量?效
5.验证是否配置成功
1.3.3?Hadoop目录说明
2??伪分布式集群搭建2.1. 伪分布式模式介绍
?2.2. 平台软件说明
2.3 伪分布式搭建环境准备?1. 总纲
?2. 防?墙关闭确认
3. 配置/etc/hosts?件
4. 确保ssh对localhost的免密登陆认证有效
5. 安装Jdk和Hadoop,配置相关环境变量
2.4 伪分布式相关?件配置1. core-site.xml的配置
2. hdfs-site.xml的配置
3. hadoop-env.sh的配置:指定jdk的环境
2.5 格式化NameNode1. 格式化命令
2.6 启动HDFS1. 启动伪分布式
2. 启动滚动信息 3. jps命令查看守护进程
?2.7 WebUI查看
|
平台&软件 | 说明 |
操作系统 | Windows7 或 Windows 10 或 Mac OS |
虚拟软件 | VMWare 或 Parallels Desktop(Mac Only) |
虚拟机 | 主机名: hadoop01,IP地址: 192.168.10.101 主机名: hadoop02,IP地址: 192.168.10.102 主机名: hadoop03,IP地址: 192.168.10.103 |
SSH?具 | MobaXterm(Windows) 或 FinalShell(Mac) |
软件包上传路径 | /root/softwares |
软件安装路径 | /usr/local |
JDK | jdk-8u221-linux-x64.tar.gz |
Hadoop | hadoop-2.7.6.tar.gz |
?户 | root |
注意:
实际?产环境中,不会使?root?户来搭建和管理hdfs,?是使?普通?户。这?为了?便学习,我们才使?的root?户。
ps:
1.如果你是从伪分布式过来的,最好先把伪分布式的相关守护进程关闭:stop-all.sh
2.删除原来伪分布式的相关设置
如果原来使?的是默认路径,现在已经没有?了
如果原来使?的跟现在全分布式路径?样,因为这?跟之前的初始化的内容不?样,?且
这个?件要让系统?动?成
综上:要删除掉namenode和datanode的?录
部署hdfs完全分布式的同时搭建?下yarn。hdfs和yarn的相关守护进程的布局如下:
hadoop01: namenode,datanode,ResourceManager,nodemanager
hadoop02: datanode,nodemanager,secondarynamenode
hadoop03: datanode,nodemanager
1. 总纲
-1. 三台机器的防?墙必须是关闭的.
-2. 确保三台机器的?络配置畅通(NAT模式,静态IP,主机名的配置)
-3. 确保/etc/hosts?件配置了ip和hostname的映射关系
-4. 确保配置了三台机器的免密登陆认证(克隆会更加?便)
-5. 确保所有机器时间同步
-6. jdk和hadoop的环境变量配置
?2. 关闭防?墙
[root@hadoop01 ~]# systemctl stop firewalld
[root@hadoop01 ~]# systemctl disable firewalld
[root@hadoop01 ~]# systemctl stop NetworkManager
[root@hadoop01 ~]# systemctl disable NetworkManager
#最好也把selinux关闭掉,这是linux系统的?个安全机制,进??件中将SELINUX设置为disabled
[root@hadoop01 ~]# vi /etc/selinux/config
.........
SELINUX=disabled
.........
情况说明: 如果安装好三台机器,三台机器的防?墙都需要单独关闭和设置开机不启动。如果准备使?克隆?式,只关闭hadoop01机器即可。下?的配置也是如此。
3. 静态IP和主机名配置
--1. 配置静态IP(确保NAT模式)
[root@hadoop01 ~]# vi /etc/sysconfig/networkscripts/ifcfg-ens33
............
BOOTPROTO=static # 将dhcp改为static
............
ONBOOT=yes # 将no改为yes
IPADDR=192.168.10.101 # 添加IPADDR属性和ip地址
PREFIX=24 # 添加
NETMASK=255.255.255.0或者PREFIX=24
GATEWAY=192.168.10.2 # 添加?关GATEWAY
DNS1=114.114.114.114 # 添加DNS1和备份DNS
DNS2=8.8.8.8
--2. 重启?络服务
[root@hadoop01 ~]# systemctl restart network
或者
[root@hadoop01 ~]# service network restart
--3. 修改主机名(如果修改过,请略过这?步)
[root@localhost ~]# hostnamectl set-hostname hadoop01
或者
[root@localhost ~]# vi /etc/hostname
hadoop01
4. 配置/etc/hosts?件
[root@hadoop01 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
192.168.10.101 hadoop01 #添加本机的静态IP和本机的主机名之间的映射关系
192.168.10.102 hadoop02
192.168.10.103 hadoop03
5. 免密登陆认证
-1. 使?rsa加密技术,?成公钥和私钥。?路回?即可
[root@hadoop01 ~]# cd ~
[root@hadoop01 ~]# ssh-keygen -t rsa
-2. 进?~/.ssh?录下,使?ssh-copy-id命令
[root@hadoop01 ~]# cd ~/.ssh
[root@hadoop01 .ssh]# ssh-copy-id root@hadoop01
-3. 进?验证
[hadoop@hadoop01 .ssh]# ssh hadoop01
#下?的第?次执?时输?yes后,不提示输?密码就对了
[hadoop@hadoop01 .ssh]# ssh localhost
[hadoop@hadoop01 .ssh]# ssh 0.0.0.0
注意:三台机器提前安装好的情况下,需要同步公钥?件。如果使?克隆技术。那
么使?同?套密钥对就?便多了。
6. 时间同步
7. 安装Jdk和Hadoop,配置相关环境变量
-1. 上传和解压两个软件包
[root@hadoop01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C
/usr/local/
[root@hadoop01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C
/usr/local/
-2. 进?local?,给两个软件更名
[root@hadoop01 ~]# cd /usr/local/
[root@hadoop01 local]# mv 1.8.0_221/ jdk
[root@hadoop01 local]# mv hadoop-2.7.6/ hadoop
-3. 配置环境变量
[hadoop@hadoop01 local]# vi /etc/profile
.....省略...........
#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
1. 在完全分布式集群的配置中,需要配置的是4个配置?件
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
?2. 这?个配置?件有默认的配置,命名为default
core-default.xml
hdfs-default.xml
mapred-default.xml
yarn-default.xml
?3. 我们可以将默认的配置?件找出来,看看默认的配置
[root@hadoop01 share]# cd /usr/local/hadoop/share
[root@hadoop01 share]# find -name "*-default.xml" -exec cp {} ~/defaultXml \;
4. 属性的优先级
代码中配置的属性 > *-site.xml > *-default.xml
1. 配置core-site.xml
[root@hadoop01 ~]# cd $HADOOP_HOME/etc/hadoop/
[root@hadoop01 hadoop]# vi core-site.xml
<configuration>
<!-- hdfs的地址名称:schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的?个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
2. 配置hdfs-site.xml
[root@hadoop01 hadoop]# vi hdfs-site.xml
<configuration>
<!-- namenode守护进程管理的元数据?件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地?件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块的??(128M),下?的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端?号。参考
守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:50090</value>
</property>
<!-- namenode守护进程的http地址:主机名和端?号。参考守护进程布
局-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:50070</value>
</property>
</configuration>
3. 配置mapred-site.xml
[root@hadoop01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@hadoop01 hadoop]# vi mapred-site.xml
<configuration>
<!-- 指定mapreduce使?yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- 配置作业历史服务器的http地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
</configuration>
4. 配置yarn-site.xml
[root@hadoop01 hadoop]# vi yarn-site.xml
<configuration>
<!-- 指定yarn的shuffle技术-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!--下?的可选-->
<!--指定shuffle对应的类 -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--配置resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8032</value>
</property>
<!--配置resourcemanager的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<!--配置resoucemanager的资源调度的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resourcetracker.address</name>
<value>hadoop01:8031</value>
</property>
<!--配置resourcemanager的管理员的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop01:8033</value>
</property>
<!--配置resourcemanager的web ui 的监控??-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop01:8088</value>
</property>
</configuration>
5. 配置hadoop-env.sh
[root@hadoop01 hadoop]# vi hadoop-env.sh
.........
# The java implementation to use.
export JAVA_HOME=/usr/local/jdk-1.8.0
.........
6. 配置slaves?件
# 此?件?于指定datanode守护进程所在的机器节点主机名
[root@hadoop01 hadoop]# vi slaves
hadoop01
hadoop02
hadoop03
7. 配置yarn-env.sh?件
# 此?件可以不配置,不过,最好还是修改?下yarn的jdk环境?较好
[root@hadoop01 hadoop]# vi yarn-env.sh
.........
# some Java parameters
export JAVA_HOME=/usr/local/jdk-1.8.0
if [ "$JAVA_HOME" != "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME=$JAVA_HOME
fi
.........
两种?式可选择配置另外几台机器的hadoop:
?式?: “scp”进?同步
提示:本?法适?于多台虚拟机已经提前搭建出来的场景。
--1. 同步hadoop到slave节点上
[root@hadoop01 ~]# cd /usr/local
[root@hadoop01 local]# scp -r ./hadoop hadoop02:/usr/local/
[root@hadoop01 local]# scp -r ./hadoop hadoop03:/usr/local/
--2. 同步/etc/profile到slave节点上
[root@hadoop01 local]# scp /etc/profile hadoop02:/etc/
[root@hadoop01 local]# scp /etc/profile hadoop03:/etc/
--3. 如果slave节点上的jdk也没有安装,别忘记同步jdk。
--4. 检查是否同步了/etc/hosts?件
?式?: 克隆hadoop01虚拟机
提示:本?法适?于还没有安装slave虚拟机的场景。通过克隆hadoop01节点的?
式,来克隆?个hadoop02和hadoop03机器节点,这种?式就不?重复安装环境
和配置?件了,效率?常?,节省了?部分时间(免密认证的秘钥对都是相同的?套)。
--1. 打开?个新克隆出来的虚拟机,修改主机名
[root@hadoop01 ~]# hostnamectl set-hostname hadoop02
--2. 修改ip地址
[root@hadoop01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
.........省略.........
IPADDR=192.168.10.102 <==修改为hadoop02对应的ip地
址
.........省略........
--3. 重启?络服务
[root@hadoop01 ~]# systemctl restart network
--4. 其他新克隆的虚拟机重复以上1~3步
--5. 免密登陆的验证
从hadoop01机器上,连接其他的每?个节点,验证免密是否好使,同时去掉第
?次的询问步骤
--6. 建议:每台机器在重启?络服务后,最好reboot?下。
1. 注意事项
格式化完成NameNode后,会在core-site.xml中的配置hadoop.tmp.dir的路 径下?成集群相关的?件。如果之前在伪分布式的时候已经格式化完成,并且这个路 径已经?成了,需要先将这个?录?动删除掉,然后再格式化集群,否则会导致集群 启动失败,NameNode和DataNode?法建?连接。
?2. 在hadoop01机器上运?命令
[root@hadoop01 ~]# hdfs namenode -format
3. 格式化的相关信息解读
--1. ?成?个集群唯?标识符:clusterid
--2. ?成?个块池唯?标识符:blockPoolId
--3. ?成namenode进程管理内容(fsimage)的存储路径:
?默认配置?件属性hadoop.tmp.dir指定的路径下?成dfs/name?录
--4. ?成镜像?件fsimage,记录分布式?件系统根路径的元数据
--5. 其他信息都可以查看?下,?如块的副本数,集群的fsOwner等。
1. 启动脚本和关闭脚本介绍
1. 启动脚本
?-- start-dfs.sh :?于启动hdfs集群的脚本
?-- start-yarn.sh :?于启动yarn守护进程
?-- start-all.sh :?于启动hdfs和yarn
2. 关闭脚本
?-- stop-dfs.sh :?于关闭hdfs集群的脚本
?-- stop-yarn.sh :?于关闭yarn守护进程
-- stop-all.sh :?于关闭hdfs和yarn
3. 单个守护进程脚本
?-- hadoop-daemons.sh :?于单独启动或关闭hdfs的某?个守护进
程的脚本
?-- hadoop-daemon.sh :?于单独启动或关闭hdfs的某?个守护进
程的脚本
?reg:
?hadoop-daemon.sh [start|stop]
[namenode|datanode|secondarynamenode]
?
?-- yarn-daemons.sh :?于单独启动或关闭hdfs的某?个守护进程的
脚本
?-- yarn-daemon.sh :?于单独启动或关闭hdfs的某?个守护进
程的脚本
?reg:
?yarn-daemon.sh [start|stop]
[resourcemanager|nodemanager]
?2. 启动hdfs
1. 使?start-dfs.sh,启动 hdfs
2. 启动过程解析
- 启动集群中的各个机器节点上的分布式?件系统的守护进程
??个namenode和resourcemanager以及secondarynamenode
?多个datanode和nodemanager
- 在namenode守护进程管理内容的?录下?成edit?志?件
- 在每个datanode所在节点下?成${hadoop.tmp.dir}/dfs/data?录,
?3. jps查看进程
--1. 在hadoop01上运?jps指令,会有如下进程
?namenode
?datanode
--2. 在hadoop02上运?jps指令,会有如下进程
?secondarynamenode
?datanode
--3. 在hadoop03上运?jps指令,会有如下进程
?datanode
注意:
?如果哪台机器的相关守护进程没有开启,那么,就查看哪台机器上的守护进程对应的?志log?件,注意,启动脚本运?时提醒的?志后缀是*.out,?我们 查看的是*.log?件。此?件的位置:${HADOOP_HOME}/logs/?。
4. WebUI查看
?3. 启动yarn
1. 使?start-yarn.sh脚本
2. jps查看
--1. 在hadoop01上运?jps指令,会多出有如下进程
?resoucemanager
?nodemanager
--2. 在hadoop02上运?jps指令,会多出有如下进程
?nodemanager
--3. 在hadoop03上运?jps指令,会多出有如下进程
?nodemanager
3. webui查看
1. 格式化集群时,报错原因
?- 当前?户使?不当
?- /etc/hosts?的映射关系填写错误
?- 免密登录认证异常
?- jdk环境变量配置错误
?- 防?墙没有关闭
2. namenode进程没有启动的原因:
?- 当前?户使?不当
?- 重新格式化时,忘记删除${hadoop.tmp.dir}?录下的内容
?- ?络震荡,造成edit?志?件的事务ID序号不连续
3. datanode出现问题的原因
?- /etc/hosts?的映射关系填写错误
?- 免密登录异常
?- 重新格式化时,忘记删除${hadoop.tmp.dir}?录下的内容,造成
datanode的唯?标识符不在新集群中。
4. 上述问题暴?解决办法:重新格式化
?如果想重新格式化,那么需要先删除每台机器上的${hadoop.tmp.dir}指定路
径下的所有内容,然后再格式化:最好也把logs?录下的内容也清空,因为?志内容已
经是前?个废弃集群的?志信息了,留着也??。
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 | -2025/5/1 9:33:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |