hadoop-HDFS集群搭建伪分布式/分布式模式
官网导读
http://hadoop.apache.org/docs/r2.6.5/
支持最好的平台:GNU/Linux
依赖的软件:Java,ssh:免密登录,远程连接,远程登录远程执行文件,ssh在远程登陆的情况下,不会加载etc下的配置文件,可以
ssh root@远程地址 'source /etc/profile ; 命令'
部署模式:
伪分布式,分布式
基础设施
操作系统,环境,网络,必须软件
搭建步骤在下面,这里主要是每个步骤的原理
1.设置IP及主机名
不必多说
2.关闭防火墙&selinux
3.设置hosts映射
保证可以通过设置的名称访问其他主机
4.生成公钥,私钥,只要一台机器有另一台机器的公钥文件,另一台机器就可以免密登录这台机器
部署配置
修改hadoop-env.sh
背身文件自带export JAVA_HOME=${JAVA_HOME}
因为远程加载不能加载环境变量,所以要改为绝对路径
export JAVA_HOME=/usr/java/default
修改core-site.xml
<value>hdfs://node01:9000</value>
说明了namenode的位置
修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/bigdata/hadoop/local</value>//说明元数据的存放位置
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>//控制角色的启动secondary是帮助namenode合并滚动
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>node01:50090</value>//控制角色的启动secondary是检查点的路径
</property>
3说明有3个节点
修改slaves
放datanode的名称
初始化&运行
namenode格式化元数据 千万不要重复操作,出错了除外
hdfs namenode -format
创建目录,并初始化一个空的fsimage文件
VERSION文件-》CID(集群id)
datanode格式化
start-dfs.sh
命令行使用
hdfs dfs //查看支持的hadoop命令
hdfs dfs -mkdir /user/root
hdfs dfs -put hadoop-2.6.5 /user/root
Hadoop分布式搭建
所用环境:CentOS-7-x86_64-DVD-1511
jdk-8u171-linux-x64
hadoop-2.7.3.tar
集群节点:master: 192.168.200.20/24
slave1: 192.168.200.30/24
slave2: 192.168.200.40/24
安装虚拟机: 安装完成后克隆出来两台从节点 这样虚拟机就安装完成了,一共三台
更改主机名称: hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
bash(立即生效)
关闭主从节点防火墙: systemctl stop firewalld
更改/etc/hosts文件 IP映射 ip对应主机名
通过scp命令发布到其他节点:
scp /etc/hosts root@slave1:/etc/hosts
scp /etc/hosts root@slave2:/etc/hosts
主节点配置本地源 安装ftp
从slave节点使用主节点ftp源
接下来配置SSH免密登录
为什么配置ssh免密登录呢?因为在集群启动过程中由主节点master远程启动从节点slave上的进程服务需要进行ssh登录,配置好免密主节点登录从节点ssh就不需要输入密码了。
在主节点生成密钥文件: ssh-keygen –t rsa 一路回车
id_rsa是私钥文件 id_rsa.pub是公钥文件
接下来将公钥文件发布到从节点,先发送到主节点
ssh-copy-id -i /root/.ssh/id_rsa.pub master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
ssh免密配置完成
配置时间同步服务NTP
为什么要配置NTP服务?因为Hadoop集群对时间要求很高,主节点和各个从节点必须要同步,配置时间同步服务为了进行集群间的时间同步。
通过tzselect命令 5 9 1 1 顺序获取北京时间写法但是不会生效
设置环境变量:TZ=‘Asia/Shanghai’; export TZ 写入到profile文件中
首先在主从节点安装ntp服务:yum install –y ntp
配置文件/etc/ntp.conf
主节点注释文件当中的server开头的行 然后添加:
restrict 192.168.200.20 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10
从节点注释文件中server开头文件添加时间同步 server master
只启动主节点的ntp服务其他节点不要启动
配置任务计划Crontab:
从节点每天早上八点到晚上五点每半个小时同步一次,主节点不需要配置
/usr/sbin/ntpdate master
启动NTP命令: systemctl start ntpd
从节点同步测试
Java jdk配置 ------主从节点都需要配置
解压jdk 配置环境变量
export JAVA_HOME=/root/software/jdk1.8.0_171
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
使文件立即生效:source /etc/profile
测试
同样的步骤进行从节点配置
准备工作完成开始安装Hadoop----以下操作为主节点
Common模块 core-site.xml
HDFS模块 hdfs-site.xml
MapReduce模块 mapred-site.xml
Yarn模块 yarn-site.xml
上传Hadoop到Linux
解压hadoop到software目录下
配置文件目录为:/root/software/hadoop-2.7.3/etc/hadoop
修改配置文件:core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/software/tmp/</value>
</property>
hadoop-env.sh配置java jdk环境
export JAVA_HOME=/root/software/jdk1.8.0_171
配置hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
复制模板文件生成:cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
配置yarn-env.xml 配置java环境变量
slave添加集群节点 因为我们已经配置好映射所以直接填写主机名
拷贝Hadoop安装文件到集群HDFS节点
scp -r /root/software/hadoop-2.7.3/ slave1:/root/software/
scp -r /root/software/hadoop-2.7.3/ slave2:/root/software/
添加Hadoop环境变量 主动节点都需要配置
export HADOOP_HOME=/root/software/hadoop-2.7.3
export PATH=
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:PATH
开始格式化主节点NameNode:
目录:/root/software/hadoop-2.7.3/bin
执行命令:./hdfs namenode -format
启动Hdfs集群 ./start-dfs.sh
主节点启动: SecondaryNameNode NameNode
从节点启动: DataNode
启动yarn集群 ./start-yarn.sh
启动日志服务: ./mr-jobhistory-daemon.sh start historyserver
查看进程:
主节点启动:
ResourceManager JobHistoryServer
从节点启动:NodeManager
通过网页访问hdfs:50070
通过网页访问yarn:8088
本文作者:我是小杨
本文链接:https://www.cnblogs.com/Liguangyang/p/16492758.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端