Hadoop-3.xx单机和集群安装教程
搭建单机系统
下载软件
我这里提供Hadoop-3.0.3的安装包
链接:https://pan.baidu.com/s/1prQlQZxikjcPMOsVBrda1w
提取码:1234
当然你也可以去官网下载自己找具体版本下面就大概演示了下怎么去下载的
https://hadoop.apache.org/releases.html
然后将hadoop-3.0.3.tar.gz上传的linux上我这里以centos7为例:
cd ~
mkdir hadoop
cd hadoop
tar -zxf hadoop-3.0.3.tar.gz
然后安装JDK配置环境变量
可以参考这篇文件
还需要在hadoop-3.0.3/etc/hadoop/hadoop-env.sh 里再显示地重新声明一遍JAVA_HOME
ssh免登陆
安装ssh
yum install -y openssl openssh-server
yum -y install openssh-clientssystemctl start sshd.service
systemctl enable sshd.service
先检测是否可用免登陆到本机
ssh 本地主机ip
如果需要输入密码那么就不能免登录,那么使用hadoop就会失败
配置ssh免登陆:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
配置Hadoop环境变量
vi /etc/profile
文件最后添加内容如下:
PATH=$PATH:/root/hadoop/hadoop-3.0.3/bin:/root/hadoop/hadoop-3.0.3/sbin
export PATH
刷新环境变量立即生效
source /etc/profile
关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
修改hadoop配置文件
etc/hadoop/core-site.xml:
<configuration><property><name>hadoop.tmp.dir</name><value>file:/root/hadoop/hadoop-3.0.3/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
注意: <value>hdfs://localhost:9000</value>
改为你服务器的ip,否则启动不起来DataNode
etc/hadoop/hdfs-site.xml:
<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/root/hadoop/hadoop-3.0.3/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/root/hadoop/hadoop-3.0.3/tmp/dfs/data</value></property>
</configuration>
格式化文件系统
注意: 格式化,会将数据全部清空的,而且如果hadoop启动状态是无法进行格式化的,所有建议在安装的时候格式化一次就行了之后就不需要了
/root/hadoop/hadoop-3.0.3/bin/hdfs namenode -format
如果第二次会出现下图: 意思就是让你重写格式你选y就行了
格式成功后 /root/hadoop/hadoop-3.0.3/tmp 下会出现dfs目录
启动 NameNode和 DataNode
/root/hadoop/hadoop-3.0.3/sbin/start-dfs.sh
然后检测是否启动成功jps
然后在通过游览器访问hadoop
Hadoop3之前: http://192.168.42.129:50070/
Hadoop3之后: http://192.168.42.129:9870/
搭建集群系统
准备3台虚拟机或者服务器 master, slave1,slave2 ,我使用的是centos7
配置host((所有节点))
vi /etc/hosts
192.168.42.129 master
192.168.42.131 slave1
192.168.42.132 slave2
修改主机名称(所有节点)
192.168.42.129
hostnamectl set-hostname master
192.168.42.131
hostnamectl set-hostname slave1
192.168.42.132
hostnamectl set-hostname slave2
ping 测试 各节点相互之间的访问情况
ping -c 3 master
ping -c 3 slave1
ping -c 3 slave2
关闭防火墙(所有节点)
关闭防火墙
systemctl stop firewalld.service
禁止 firewall 开机启动
systemctl disable firewalld.service
查看防火墙状态
firewall-cmd --state
配置SSH免密(全部节点)
ssh免登陆
安装ssh(全部节点)
yum install -y openssl openssh-server & yum -y install openssh-clients# 启动ssh
systemctl start sshd.service&systemctl enable sshd.service
先检测是否可用免登陆到本机(master)
ssh 本地主机ip
如果需要输入密码那么就不能免登录,那么使用hadoop就会失败
配置ssh免登陆(一直回车就行):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
集群需要将公秘钥发给其他节点(master)
ssh-copy-id -i -f slave1
ssh-copy-id -i -f slave2
在master中测试slave1和slave2是否能ssh免登陆(不用输入密码)
ssh slave1
ssh slave2
使用exit可以退出
下载软件(Master)
hadoop-3.2.0.tar.gz
链接:https://pan.baidu.com/s/15fzoVZftPwMt2dzXJbOt9w
提取码:1234
将软件通过ftp工具上传到服务器里/url/local/目录下
cd /url/local/
tar -zxfv hadoop-3.2.0.tar.gz
mv hadoop-3.2 hadoop
cd hadoop
修改hadoop配置文件(Master)
/usr/local/hadoop/etc/hadoop
workers (配置所有子节点的主机名称)
slave1
slave2
core-site.xml
<configuration><!-- NameNode的通信地址 --> <property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!-- Hadoop工作目录,用于存放Hadoop运行时产生的临时数据 --><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property><!-- 开启Hadoop的回收站机制,当删除HDFS中的文件时,文件将会被移动到回收站(/usr/<username>/.Trash),在指定的时间过后再对其进行删除,此机制可以防止文件被误删除 --> <property> <name>fs.trash.interval</name> <!-- 单位是分钟 --> <value>1440</value> </property></configuration>
hdfs-site.xml
<configuration><property>
<!-- 块大小,默认字节, 可使用 k m g t p e--><name>dfs.blocksize</name><!--128m--><value>134217728</value></property><!-- 关闭HDFS的https访问权限--><property><name>dfs.permissions.enabled</name><value>false</value></property> <property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/dfs/data</value></property><!-- 副本个数我们就2个子节点 --><property><name>dfs.replication</name><value>2</value></property></configuration>
mapred-site.xml
<configuration><!-- 让MapReduce任务使用YARN进行调度 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
</configuration>
yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value> </property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
</configuration>
复制hadoop文件到其他子节点
scp -r /usr/local/hadoop root@slave1:/usr/local/
scp -r /usr/local/hadoop root@slave2:/usr/local/
配置环境变量(所有节点)
JDK的安装和环境变量的配置
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin# root 用户允许使用hadoop
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root
刷新环境变量立即生效
source /etc/profile
格式化与启动(Master)
注意,如果需要重新格式化 NameNode ,需要先将原来 NameNode 和 DataNode 下的文件全部删除 (全部节点)
rm -rf $HADOOP_HOME/dfs/data/*
rm -rf $HADOOP_HOME/dfs/name/*
rm -rf $HADOOP_HOME/tmp/*
因为每次格式化,都会创建一个新的集群 ID,在目录为 dfs/name/current 和 dfs/data/current 中的 VERSION 文件中,如果不删除原来的目录,会使 namenode 中的 VERSION 文件中是新的集群 ID,而DataNode中是旧的集群 ID,不一致,后续因此会使 datanode 启动失败
格式: hadoop namenode -format
启动(在 master 上进行即可)
namenode 只能在 master 上启动,因为所有节点的配置都相同,所以 namenode 上启动后,其他节点的进程也会相应启动
启动 HDFS 集群
start-dfs.sh
若想关闭请使用如下命令
stop-all.sh
查看(所有节点)
执行 jps
master 上执行 jps,有如下进程
NameNode
SecondaryNameNode
ResourceManager
其它节点上执行 jps ,有如下进程
DataNode
NodeManager
访问
在本地电脑host配置mastr 的映射关系
C:\Windows\System32\drivers\etc\hosts
文件中加入
192.168.42.129 master
192.168.42.131 slave1
192.168.42.132 slave2
然后在cmd 中 ipconfig /flushdns
刷新dns缓存
http://master:9870
其他问题:
使用root用户操作hadoop失败
解决办法1:
输入如下命令,在环境变量中添加下面的配置
vi /etc/profile
然后向里面加入如下的内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root
输入如下命令使改动生效
source /etc/profile
解决办法2:
在/hadoop/sbin路径下:将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
hadoop日志
/root/hadoop/hadoop-3.0.3/logs
遇到问题可以在这里找原因
DataNode启动失败问题
查看日志发现
java.io.IOException: Incompatible clusterIDs in /root/hadoop/hadoop-3.0.3/tmp/dfs/data: namenode clusterID = CID-d99e47c9-9220-4792-bc2b-52831ffab2c9; datanode clusterID = CID-9667705d-79f2-4727-b625-93f02373cd9cat org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:719)at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:284)at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:397)at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:377)at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:541)at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1705)at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1665)at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:390)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:280)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:816)at java.lang.Thread.run(Thread.java:748)
这个意思是说namenode 和datanode Id 不一致因为当执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)新生成一个current/VERSION文件,记录clusterID,标识了所格式化的 namenode的版本。多次格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
解决办法:
删除DataNode的current文件
rm -rf /root/hadoop/hadoop-3.0.3/tmp/dfs/data/current
点赞 -收藏-关注-便于以后复习和收到最新内容 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^
Hadoop-3.xx单机和集群安装教程相关推荐
- 【运维技术】Zookeeper单机以及集群搭建教程
Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...
- Hadoop入门(二)集群安装
一.集群安装条件前置 在虚拟机上先准备一个机子 按用前面[安装单机hadoop] 已完成安装jdk,hadoop和ssh.网络等配置环境等. 虚拟机和操作系统 环境:ubuntu14 + hadoo ...
- RocketMQ(四)—— 单机与集群安装
文章目录 单机安装 前置工作 硬件需求: 软件需求: 安装: 1. 下载安装包 2. 下载的包上传至Linux 3. 解压 4. 修改初始内存 5.启动 6. 发送.接收消息测试 发送消息 接收消息 ...
- Clickhouse入门学习、单机、集群安装部署
参考:https://blog.csdn.net/qq_37933018/article/details/108019566 Clickhouse官网:https://clickhouse.tech/ ...
- kafka专题:kafka单机和集群安装详情,Spring Boot如何整合Kafka
文章目录 1. kafka单机安装 1.1 server.properties核心配置 2. kafka集群安装 2.1 kafka集群可视化界面 3. springboot如何整合kafka 4. ...
- mongodb的单机和集群安装手册
Mongodb的单机安装 1.下载镜像 docker pull mongo:latest 2.启动镜像 docker run -itd --name mongo -p 27017:27017 mong ...
- ElasticSearch集群安装教程
ElasticSearch Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Ja ...
- Hadoop基础之《(6)—Hadoop单机伪集群安装》
一.安装JDK yum install java-1.8* 二.关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl ...
- Hadoop(HDFS,YARN)的HA集群安装
搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装. 安装规划 角色规划 IP/机器名 安装软件 运行进程 namenode1 zdh-240 hadoop NameNode ...
最新文章
- 图灵奖得主高德纳与 LaTex 有啥关系?90%的人都不知道
- Spring在Java领域的统治地位:86% 的Java开发者依赖它!
- 【Java面试题】汽水瓶问题
- matlab井深测量,一种井深测量系统及方法与流程
- 上游供应链厂商确认高通已获准向华为出售4G芯片
- PowerShell批量配置VM端点
- 过去的2017和已经到来的2018
- [状压dp] 玉米田(状压dp)
- 小企业主代理记账基础知识
- 海思3518C 4G模块移植及运用
- 80行Python代码搞定全国区划代码
- android 功能防抖,Android RxJava 实际应用讲解:功能防抖
- Linux 下的IP/子网计算器:ipcalc
- 刘邦的用人之道!真心服气
- python之数据库-表操作
- STM32用一个定时器封装多个定时函数调用
- 杨紫富豪男友曝光 张一山结婚系剧照乌龙
- dva是什么游戏_Dva爱你哟 她原来就是韩国少女宋哈娜原型
- 架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)...
- ORM一键还原系统官方版
热门文章
- 关于js中获取div中的数据
- 金融数量分析2:Markowitz均值方差模型
- mysql开发收银_农银e管家收银台PC版收款语音播报插件开发实录(二)
- 计算机休眠按钮是哪个,电源按钮设置成睡眠好还是休眠好?
- Go : constant shifts恒定位移旋转(附完整源码)
- 垃圾邮件识别-朴素贝叶斯算法
- 爬虫-使用代理ip,使用session
- 有一对兔子,从出生后的第 3 个月起每个月都生一对兔子。小兔子长到第 3 个月后每个月又生一对兔子,假设所有的兔子都不死,问 20 个月内每个月的兔子总数为多少?
- pmp中ram和raci的区别_【PMP考前冲刺】知识点大全(四)
- c语言常量指数的正确表示,c语言常量的正确表示方法有哪些