Hadoop•搭建完全分布式集群
听说这里是目录哦
前提是集群里的虚拟机间实现了免密登录以及JDK的成功安装(执行
java -version
查看JDK版本号)。【可以参考
Hadoop•FinalShell连接VMware&免密登录和
Hadoop•安装JDK】【这里是以test为主结点、test1和test2为从结点。如果看到node了,就是我忘改了,node的是以node1为主结点、node2和node3为从结点。怕真出现了会迷惑,还是谨慎一点点~😗】
一、安装Hadoop🥕
三台机子的JDK和Hadoop版本必须一致
- 电脑下载Hadoop安装包(需要该安装包可以在文章下面评论
1
,如果宝贝是学生,你们老师应该会给,命令记得要根据安装包名字对应更改哦😚) - 用FinalShell直接上传到虚拟机,用
mv
命令移动到所需文件夹。如mv /jdk-8u271-linux-x64.tar.gz /export/software
,即mv /要移动文件的名字/要移动到的文件夹
(如果显示没有那个文件或目录
,“Hadoop•安装JDK”里有解决办法) - 将位于
/export/software
的文件名为hadoop-3.3.0.tar.gz
的Hadoop安装包解压缩到/export/servers
,命令为tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers
(这里的目录约定在Hadoop•安装JDK有说明)
二、配置Hadoop系统环境变量🥮
编辑环境变量的配置文件,命令为vi /etc/profile
,在文件底部添加这些你所安装的Hadoop(解压缩后)的路径以及它的bin
目录(包含Hadoop可执行文件)和sbin
目录(包含系统级别的Hadoop可执行文件,用于启动和停止Hadoop服务)的路径。编好后保存退出,用source /etc/profile
使环境变量生效。
添加:
export HADOOP_HOME=/export/servers/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
增加理解:
三、验证Hadoop系统环境变量是否配置成功🧁
执行hadoop version
命令可以查看到Hadoop版本号就成功了(跟查看JDK版本号的命令不同,这个命令version
前没有横杠-
)
四、修改Hadoop配置文件🍭
修改的都是自己后来装的Hadoop3.3.0【/export/servers/hadoop-3.3.0/etc/hadoop
】里的,一共要修改六个文件。
- hadoop-env.sh
在底部添加
export JAVA_HOME=/export/servers/jdk1.8.0_271
#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
🧀🧀🧀我是分割线
- core-site.xml
在底部添加
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://test:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>
🧀🧀🧀我是分割线
- hdfs-site.xml
在底部添加
<configuration>
<property>
name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>test1:9868</value>
</property>
</configuration>
🧀🧀🧀我是分割线
- mapred-site.xml
在底部添加
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>test:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>test:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>
🧀🧀🧀我是分割线
- yarn-site.xml
在底部添加
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>test</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 保存的时间7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
🧀🧀🧀我是分割线
- workers
最终修改为(core-site.xml已经指定了主节点的地址,这里只要列出从节点地址就能让集群识别主从结点了)【下面是两个从节点的名字】:
test1
test2
五、分发Hadoop安装目录🧋
-
分发到test1
scp -r /export/servers/hadoop-3.3.0 root@test1:/export/servers
-
分发到test2
scp -r /export/servers/hadoop-3.3.0 root@test2:/export/servers
六、分发系统环境变量文件🍨
-
分发到test1
scp /etc/profile root@test1:/etc
-
分发到test2
scp /etc/profile root@test2:/etc
分发完后在test1和test2执行source /etc/profile
七、格式化HDFS文件系统🍰
在主结点test执行hdfs namenode -format
,注意只有初次启动Hadoop集群前才需要格式化。
八、启动Hadoop🎂
在主结点test执行start-dfs.sh
和start-yarn.sh
实现在三台虚拟机上启动HDFS和YARN的相关服务。如果要关闭Hadoop,则在主结点test执行stop-dfs.sh
和stop-yarn.sh
的命令。(或者start-all.sh
一键启动)
start-all.sh
一键启动在Hadoop 2.x版本中已经被弃用,在Hadoop 3.x版本中,仍然可以使用,但建议分别使用start-dfs.sh
和start-yarn.sh
来启动HDFS和YARN服务,以避免潜在的问题。总的来说,就是最好分别启动。
🧀🧀🧀我是分割线
九、查看Hadoop运行状态🍬
分别在三台虚拟机执行jps
命令查看Hadoop运行状态。
搭建时遇到的问题⚠️
logs does not exist. Creating
这里是以test为主结点、test1和test2为从结点。
问题:test1: WARNING: /export/servers/hadoop-3.3.0/logs does not exist. Creating.
解决办法:在三个节点上启动journalnode
,命令是hdfs --daemon start journalnode
,就是三台虚拟机都需要执行这个命令。
secondary namenode等丢失(jps时看不到)
问题:多次格式化导致secondary namenode
等丢失(jps
时看不到)
解决办法:
-
关闭集群
stop-all.sh
或stop-dfs.sh
和stop-yarn.sh
-
删除集群产生的缓存文件(三台机子都要!!!)
(一)/export/data
的hadoop文件夹(三台机子都要)
(二)删除/export/servers/hadoop-3.1.4/logs
(三台机子都要)
也是先刷新哦,然后整个文件夹直接删掉,格式化后会自己创建的
-
重新格式化
hdfs namenode -format
能量站😚
我遇到的挑战可以帮助我成长。
❤️谢谢你为自己努力❤️
原文地址:https://blog.csdn.net/2301_80766171/article/details/145189440
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!