大数据应用之 — hadoop安装部署
hadoop
集群规划
节点 | ip | 角色 |
---|---|---|
lsyk01 | 192.168.126.31 | ResourceManager,NameNode |
lsyk02 | 192.168.126.32 | DataNode,NodeManager |
lsyk03 | 192.168.126.33 | DataNode,NodeManager |
lsyk04 | 192.168.126.34 | DataNode,NodeManager |
准备工作
1:每台java环境安装
2:每台互信
3:配置hostname
4:关闭防火墙
详见:《大数据应用之 — 环境准备工作》,
https://blog.csdn.net/qq_41187116/article/details/125702854?spm=1001.2014.3001.5501
Hadoop 安装部署
-
解压
tar -zxvf /softw/hadoop-3.3.3.tar.gz -C /opt/
-
配置环境变量
vi /etc/profile # 添加以下内容 export HADOOP_HOME=/opt/hadoop-3.3.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 保存后生效测试 source /etc/profile hadoop version
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YXxjTsVu-1657901770918)(C:\Users\yuanf\AppData\Roaming\Typora\typora-user-images!在这里插入图片描述
)] -
配置/opt/hadoop-3.3.3/etc/hadoop/相关配置文件
cd /opt/hadoop-3.3.3/etc/hadoop/ vi hadoop-env.sh # 添加以下内容 export JAVA_HOME=/usr/java/jdk1.8.0_333 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 vi core-site.xml <!-- 在configuration标签内添加以下内容 --> <!-- fs.default.name已经过时了,现在一般都用fs.defaultFS--> <!-- NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://lsyk01:9000</value> </property> <!-- 临时文件存放位置 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop-3.3.3/tmp</value> </property> vi hdfs-site.xml <!-- 在configuration标签内添加以下内容 --> <!-- 设置副本数量 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- namenode存放的位置,老版本是用dfs.name.dir --> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop-3.3.3/name</value> </property> <!-- datanode存放的位置,老版本是dfs.data.dir --> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop-3.3.3/data</value> </property> <!-- 关闭文件上传权限检查 --> <property> <name>dfs.permissions.enalbed</name> <value>false</value> </property> <!-- namenode运行在哪儿节点,默认是0.0.0.0:9870,在hadoop3.x中端口从原先的50070改为了9870 --> <property> <name>dfs.namenode.http-address</name> <value>lsyk01:9870</value> </property> <!-- secondarynamenode运行在哪个节点,默认0.0.0.0:9868 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>lsyk02:9868</value> </property> vi yarn-site.xml <!-- 在configuration标签内添加以下内容 --> <!-- resourcemanager运行在哪个节点 --> <property> <name>yarn.resourcemanager.hostname</name> <value>lsyk01</value> </property> <!-- nodemanager获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 关闭虚拟内存检查 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> vi mapred-site.xml <!-- 在configuration标签内添加以下内容 --> <!-- 设置mapreduce在yarn平台上运行 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 配了上面这个下面这个也得配, 不然跑mapreduce会找不到主类。MR应用程序的CLASSPATH--> <property> <name>mapreduce.application.classpath</name> <value>/opt/hadoop-3.3.3/share/hadoop/mapreduce/*:/usr/local/src/hadoop-3.3.3/share/hadoop/mapreduce/lib/*</value> </property> vi workers # 删掉里面的localhost,添加以下内容,3个从节点的ip映射 lsyk02 lsyk03 lsyk04
-
分发文件
# 分发hadoop cd /opt scp -r hadoop-3.3.3 root@lsyk02:$PWD scp -r hadoop-3.3.3 root@lsyk03:$PWD scp -r hadoop-3.3.3 root@lsyk04:$PWD # 分发/etc/profile scp /etc/profile root@lsyk02:/etc/ scp /etc/profile root@lsyk03:/etc/ scp /etc/profile root@lsyk04:/etc/ # 然后在两个从节点上执行 source /etc/profile
-
格式化namenode
lsyk01上执行:
hdfs namenode -format
namenode的name目录也创建了:
启动集群并测试
lsyk01上执行:
# 启动hdfs start-dfs.sh # 启动yarn start-yarn.sh # 查看进程 jps
start-dfs.sh
datanode的data目录也创建了:
start-yarn.sh
jps:
http://lsyk01:9870/
http://lsyk01:8088/
words count
vi words.txt #随意输入字符串 北京大学 清华大学 耶鲁大学 牛津大学 java Python hello 321 hahaha i love you you love me too 清华大学 java flink #wq! #上传hdfs hadoop fs -put words.txt /input #调jar hadoop jar /opt/hadoop-3.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar wordcount /input/ /output
hadoop启动所有的服务
在 $HADOOP_HOME/sbin 里有启动各个服务的脚本,也有启动的总脚本
#启动hdfs、yarn
start-all.sh
#停止hdfs、yarn
stop-all.sh