ToB企服应用市场:ToB评测及商务社交产业平台

标题: 大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!) [打印本页]

作者: 卖不甜枣    时间: 2024-6-22 12:58
标题: 大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!)
大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!)

Linux搭建Hadoop集群(CentOS7+hadoop3.2.0+JDK1.8+Mapreduce完全分布式集群)
   本文所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8
  基本概念及重要性

许多小伙伴部署集群用hadoop用mapreduce,却不知道到底部署了什么,有什么用。在部署集群之前先给大家讲一下Hadoop和MapReduce的基本概念,以及它们在大数据处置惩罚中的重要性:
-Hadoop 是一个由Apache基金会开发的开源软件框架,用于在大规模数据集上进行分布式处置惩罚和存储。Hadoop的核心组件包括Hadoop Distributed File System (HDFS)和MapReduce。

Hadoop和MapReduce在大数据处置惩罚中的重要性主要体现在以下几点:
下面正式进入正题话!
一、直接选择root用户登录并关闭防火墙


直接选择root用户登录,避免了普通用户授权和切换用户导致的一些情况问题,简单来说就是高效、方便。
然后关闭防火墙:
  1. systemctl stop firewalld  //关闭防火墙
复制代码

  1. systemctl disable firewalld  //关闭开机自启
复制代码

  1. systemctl status firewalld  //查看防火墙状态
复制代码

让防火墙处于关闭状态。
二、实现ssh免密码登录

配置ssh的无密码访问
  1. ssh-keygen -t rsa
复制代码
一连按回车

  1. cd ~/.ssh
  2. cat id_rsa.pub >> authorized_keys
复制代码

设置ssh服务器自动启动
  1. vi ~/.bashrc
复制代码
在文件的最末尾按O进入编辑模式,加上:
  1. /etc/init.d/ssh start
复制代码

按ESC返回命令模式,输入:wq生存并退出。
让修改马上收效
  1. source ~/.bashrc
复制代码

检察ssh服务状态。
  1. systemctl status sshd
复制代码

三、CentOS7 安装jdk1.8

1、yum安装
  1. [root@master ~]# rpm -e --nodeps copy-jdk-configs-3.3-10.el7_5.noarch
复制代码
验证是否已经卸载干净:
  1. java -version
复制代码

卸载完之后开始安装jdk1.8:
检察可安装的版本
  1. yum list java*
复制代码

安装1.8.0版本openjdk
  1. yum -y install java-1.8.0-openjdk*
复制代码


安装位置检察:
  1. rpm -qa | grep java
  2. rpm -ql java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
复制代码

添加用户情况变量
添加:
  1. export JAVA_HOME=/usr/lib/jvm/java-openjdk
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$PATH:$JAVA_HOME/bin
复制代码

然后执行
  1. source ~/.bashrc
复制代码

验证安装:
  1. which java
复制代码
检察java版本信息
  1. java -version
复制代码

说明JDK配置完成。
四、下载hadoop

这个链接也有更多3.2.0版本其它的hadoop文件:
https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/
这里有下载好的hadoop-3.2.0.tar.gz网盘文件链接:
链接:https://pan.baidu.com/s/1a3GJH_fNhUkfaDbckrD8Gg?pwd=2023
下载hadoop文件:

然后上传文件并解压缩
1.在opt目次下新建一个名为hadoop的目次,并将下载得到的hadoop-3.2.0.tar上传到该目次下
mkdir /opt/hadoop
解压安装:
  1. tar -zxvf hadoop-3.2.0.tar.gz
复制代码

配置Hadoop情况变量:
  1. vim ~/.bashrc
复制代码

添加hadoop情况变量:
  1. export JAVA_HOME=/usr/lib/jvm/java-openjdk
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. :/opt/hadoop/hadoop-3.2.0/bin:/opt/hadoop/hadoop-3.2.0/sbinexport HADOOP_HOME=/opt/hadoop/hadoop-3.2.0export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
复制代码

然后我们执行
  1. source  ~/.bashrc
复制代码
使修改的配置文件收效。

五、Hadoop配置文件修改

新建几个目次:
  1. mkdir /root/hadoop
  2. mkdir /root/hadoop/tmp
  3. mkdir /root/hadoop/var
  4. mkdir /root/hadoop/dfs
  5. mkdir /root/hadoop/dfs/name
  6. mkdir /root/hadoop/dfs/data
复制代码

修改etc/hadoop中的一系列配置文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml
在节点内加入配置:
  1. <configuration>
  2. <property>
  3.         <name>hadoop.tmp.dir</name>
  4.         <value>/root/hadoop/tmp</value>
  5.         <description>Abase for other temporary directories.</description>
  6.    </property>
  7.    <property>
  8.         <name>fs.default.name</name>
  9.         <value>hdfs://master:9000</value>
  10.    </property>
  11.    </configuration>
复制代码

修改hadoop-env.sh
  1. vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
复制代码
将 export JAVA_HOME=${JAVA_HOME}
修改为: export JAVA_HOME=/usr/lib/jvm/java-openjdk
说明:修改为自己的JDK路径

修改hdfs-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
在节点内加入配置:
  1. <configuration>
  2. <property>
  3.    <name>dfs.name.dir</name>
  4.    <value>/root/hadoop/dfs/name</value>
  5.    <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.
  6.    </description>
  7. </property>
  8. <property>
  9.    <name>dfs.data.dir</name>
  10.    <value>/root/hadoop/dfs/data</value>
  11.    <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.
  12.    </description>
  13. </property>
  14. <property>
  15.    <name>dfs.replication</name>
  16.    <value>2</value>
  17. </property>
  18. <property>
  19.    <name>dfs.permissions</name>
  20.    <value>false</value>
  21.    <description>need not permissions</description>
  22. </property>
  23. </configuration>
复制代码

新建并且修改mapred-site.xml:
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml
在节点内加入配置:
  1. <configuration>
  2. <!-- 配置mapReduce在Yarn上运行(默认本地运行) -->
  3. <property>
  4.    <name>mapreduce.framework.name</name>
  5.    <value>yarn</value>
  6. </property>
  7. </configuration>
复制代码

修改workers文件:
  1. vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/workers
复制代码
将内里的localhost删除,添加以下内容(master和node1节点都要修改):
  1. master
  2. node1
复制代码

注意:上面修改后不能有多余空格,文件中不允许有空行。
也可以修改好master节点的/opt/hadoop/hadoop-3.2.0/etc/hadoop/workers文件,然后一条命令直接分发给集群,如许就不消再修改其它节点的workers文件:
  1. xsync  /opt/hadoop/hadoop-3.2.0/etc
复制代码
修改yarn-site.xml文件:
   HADOOP_CLASSPATH 是设置要运行的类的路径。否则当你用hadoop classname [args]方式运行程序时会报错,说找不到要运行的类。用hadoop jar jar_name.jar classname [args]方式运行程序时没问题
  这边需要设置hadoop classpath
否则后面mapreduce会报错找不到主类:
  1. hadoop classpath
复制代码

记下返回的效果
  1. vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml
复制代码
添加一个配置
  1. <property>        <name>yarn.application.classpath</name>        <value>hadoop classpath
  2. 返回信息</value></property>
复制代码
这是我的yarn-site.xml配置:
  1. <configuration>
  2.         <property>
  3.             <name>yarn.nodemanager.aux-services</name>
  4.             <value>mapreduce_shuffle</value>
  5.         </property>
  6.         <property>
  7.             <name>yarn.resourcemanager.hostname</name>
  8.             <value>master</value>
  9.         </property>
  10.         <property>
  11.             <name>yarn.application.classpath</name>
  12.             <value>/opt/hadoop/hadoop-3.2.0/etc/hadoop:/opt/hadoop/hadoop-3.2.0/share/hadoop/common/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/common/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn/*</value>
  13.         </property>
  14. </configuration>
复制代码

配置hadoop-3.2.0/sbin/目次下start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件
服务启动权限配置
  1. cd /opt/hadoop/hadoop-3.2.0
复制代码
配置start-dfs.sh与stop-dfs.sh文件
  1. ```bash
  2. vi sbin/start-dfs.sh
  3. vi sbin/stop-dfs.sh
复制代码
都在内里加入下面内容
  1. HDFS_DATANODE_USER=root
  2. HADOOP_SECURE_DN_USER=hdfs
  3. HDFS_NAMENODE_USER=root
  4. HDFS_SECONDARYNAMENODE_USER=root
复制代码

配置start-yarn.sh与stop-yarn.sh文件
  1. vi sbin/start-yarn.sh
  2. vi sbin/stop-yarn.sh
复制代码
加入下面内容
  1. YARN_RESOURCEMANAGER_USER=root
  2. HADOOP_SECURE_DN_USER=yarn
  3. YARN_NODEMANAGER_USER=root
复制代码


配置好底子设置(SSH、JDK、Hadooop、情况变量、Hadoop和MapReduce配置信息)后,克隆假造机,得到从机node1节点。

克隆master主机后,得到从机node1节点。
然后开始修改网卡信息:
  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码
修改node1节点ip信息:

修改node1节点主机名:
  1. vi /etc/hostname
复制代码

修改node1节点对应的ip 和主机名(主从节点保持同等)
  1. vim /etc/hosts  
复制代码

主从节点互连ssh试试:
先试试在master节点毗连node1节点
  1. ssh node1
复制代码

再试试node1节点毗连master节点:
  1. ssh master
复制代码

OK,互连成功。(按exit可以退出
六、启动Hadoop

因为master是namenode,node1是datanode,所以只需要对master进行初始化操作,也就是对hdfs进行格式化。
进入到master这台机器/opt/hadoop/hadoop-3.2.0/bin目次:
  1.   cd /opt/hadoop/hadoop-3.2.0
  2. /bin
复制代码
执行初始化脚本
  1.   ./hadoop namenode -format
复制代码


然后执行启动历程:
  1. ./sbin/start-all.sh
复制代码

检察启动历程情况。
  1. jps
复制代码

master是我们的namenode,该机器的IP是192.168.95.20,在当地电脑访问如下地址:
  1. http://192.168.95.20:9870/
复制代码

在当地欣赏器里访问如下地址:
  1. http://192.168.95.20:8088/cluster
复制代码
自动跳转到cluster页面

在hdfs上创建一个目次存放文件
  1. ./bin/hdfs dfs -mkdir -p /home/hadoop/myx/wordcount/input
复制代码
检察分发复制是否正常
  1. ./bin/hdfs dfs -ls /home/hadoop/myx/wordcount/input
复制代码

七、运行MapReduce集群

Mapreduce运行案例:
在hdfs上创建一个目次存放文件
比方
  1. ./bin/hdfs dfs -mkdir -p /home/hadoop/myx/wordcount/input
复制代码
可以先简单地写两个小文件分别为text1和text2,如下所示。
file:text1.txt
  1. hadoop is  very good
  2. mapreduce is very good
复制代码
  1. vim text1
复制代码

然后可以把这两个文件存入HDFS并用WordCount进行处置惩罚.
  1. ./bin/hdfs dfs -put text1 /home/hadoop/myx/wordcount/input
复制代码

检察分发情况

运行MapReduce用WordCount进行处置惩罚
  1. ./bin/hadoop jar ![在这里插入图片描述](https://img-blog.csdnimg.cn/81fe96bc9823429d8263e450ba417363.png)
  2. /opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar  wordcount /home/hadoop/myx/wordcount/input /home/hadoop/myx/wordcount/output
复制代码


最闭幕果会存储在指定的输出目次中,检察输出目次内里可以看到以下内容。
  1. ./bin/hdfs dfs -cat /home/hadoop/myx/wordcount/output/part-r-00000*
复制代码
运行输出效果也可以在web端检察,内里有详细信息:
  1. http://192.168.95.20:9870/
  2. explorer.html#/home/hadoop/myx/wordcount/output
复制代码


以上输出效果为每个单词出现的次数。
再来试试第二个案例:
file:text2.txt
  1. vim text2
复制代码
  1. hadoop is  easy to learn
  2. mapreduce is  easy to learn
复制代码

在欣赏器端检察新建的input2目次:

运行MapReduce进行处置惩罚,设置输出的目次为output2(输出效果目次不消提前创建,Mapreduce运行过程中会自动生成output2输出目次)。
  1. ./bin/hadoop jar /opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar  wordcount /home/hadoop/myx/wordcount/input2 /home/hadoop/myx/wordcount/output2
复制代码


运行结束后,检察text2的输出效果
  1. ./bin/hdfs dfs -cat /home/hadoop/myx/wordcount/output2/part-r-00000*
复制代码

运行输出效果也可以在web端检察,内里有详细信息:
  1. http://192.168.95.20:9870/
  2. explorer.html#/home/hadoop/myx/wordcount/output2
复制代码


以上输出效果为每个单词出现的次数。
我们再自己试试运行测试程序WordCount
先在hadoop当前用户目次下新建文件夹WordCount,在其中创建两个测试文件分别为file1.txt,file2.txt。自行在两个文件中填写内容。
新建文件夹WordCount。
  1. mkdir WordCount
  2. ls
复制代码

  1. cd WordCount
  2. vim file1.txt
复制代码

file1.txt文件内容为:
  1. This is the first hadoop test program!
复制代码

  1. vim file2.txt
复制代码
file2.txt文件内容为:
  1. This  program is not very difficult,but this program is a common hadoop program!
复制代码

然后在Hadoop文件系统HDFS中/home目次下新建文件夹input,并检察其中的内容。详细命令如下。
  1. cd /opt/hadoop/hadoop-3.2.0
  2. ./bin/hadoop fs -mkdir /input./bin/hadoop fs -ls /
复制代码

在欣赏器端检察:
  1. http://192.168.95.20:9870/
  2. explorer.html#/input
复制代码

将WordCount文件夹中file1.txt\file2.txt文件上传到刚刚创建的“input”文件夹。详细命令如下。
  1. ./bin/hadoop fs -put /opt/hadoop/hadoop-3.2.0/WordCount/*.txt  /input
复制代码

运行Hadoop的示例程序,设置输出的目次为/output(输出效果目次不消提前创建,Mapreduce运行过程中会自动生成/output输出目次)。
  1. ./bin/hadoop jar /opt/had![在这里插入图片描述](https://img-blog.csdnimg.cn/abf75678cb6943698c1a26d250317caf.png)
  2. oop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar  wordcount  /input /output
复制代码


检察输出效果的文件目次信息和WordCount效果。
使用如下命令检察输出效果的文件目次信息。
  1. ./bin/hadoop fs -ls /output
复制代码

使用如下命令检察WordCount的效果。
  1. ./bin/hdfs dfs -cat /output/part-r-00000*
复制代码
输出效果如下所示

运行输出效果也可以在web端检察,内里有详细信息:
  1. http://192.168.95.20:9870/
  2. explorer.html#/output
复制代码

以上输出效果为每个单词出现的次数。
至此Centos搭建hadoop集群和运行3个MapReduce集群案例完成!
在这里给大家扩展一下优化Hadoop集群性能和MapReduce任务服从的一些技巧和发起:
以上只是一些基本的优化技巧和发起,详细的优化计谋需要根据详细需求和情况进行调整。祝各位部署统统顺利!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4