大数据应用(一)hadoop集群搭建

it2024-11-18  3

大数据应用(一)hadoop集群搭建

最近在学习大数据技术,我把实验过程写在csdn上,以帮助我以后快速的复习。

实验环境:

centos7 Xshell6 jdk-1.8.0_261 hadoop-2.7.1

已知配置: 用户:root,hadoop

普通用户获取sudo功能 我的网络配置在另一篇文章有详细的介绍就不说啦,添加链接描述 通过Xshell连接后我们修改用户的sudo功能 先进入root账号

sudo vim /etc/sudoers

修改sudoers文件,添加内容 hadoop ALL=(ALL) NOPASSWD:ALL

## Allow root to run any commands anywhere root ALL=(ALL) ALL hadoop ALL=(ALL) NOPASSWD:ALL

关闭防火墙 返回hadoop用户,关闭防火墙,并且禁止开机启动

sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service

查看防火墙是否关闭

sudo firewall-cmd --state

成功界面:

sudo systemctl status firewalld.service

成功界面: 修改主机名

系统永久修改主机名

sudo vim /etc/hostname

修改文件内容为

centos01

然后使用reboot重启

sudo reboot

新建资源目录 在目录/opt下创建两个文件夹softwares和modules,分别存放软件安装包和软件安装后的程序文件,并修改/opt/的所有者

提一下,chown是修改所属用户和所属组,chmod是修改(用户个人,用户组,其他人的)读、写、执行的权限

sudo mkdir /opt/softwares sudo mkdir /opt/modules sudo chown -R hadoop:hadoop /opt/*

安装JDK

删除系统自带的jdk

rpm -qa | grep java #以下是输出结果 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2019c-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64 java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.251-2.6.21.1.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch java-1.7.0-openjdk-1.7.0.251-2.6.21.1.el7.x86_64

执行一下命令(下面是补全的命令,不完整但是可以正常运行),卸载以上查询出的自带jdk

sudo rpm -e --nodeps javapackages-tools sudo rpm -e --nodeps tzdata-java sudo rpm -e --nodeps java-1.8.0-openjdk sudo rpm -e --nodeps java-1.8.0-openjdk-headless sudo rpm -e --nodeps java-1.7.0-openjdk sudo rpm -e --nodeps java-1.7.0-openjdk-headless sudo rpm -e --nodeps python-javapackages

使用rz把java和Hadoop安装包(因为后面安装我们就一起上传啦)上传到/opt/softwares中 上传之后把安装包解压到/opt/modules中

tar -zxvf jdk-8u261-linux-x64.tar.gz -C /opt/modules/ tar -zxvf hadoop-2.7.1.tar.gz -C /opt/modules/

现在修改配置位置profile

sudo vim /etc/profile

在profile文件头上加入下面代码

export JAVA_HOME=/opt/modules/jdk1.8.0_261 export PATH=$PATH:$JAVA_HOME/bin

执行以下命令,刷新profile文件,使修改生效:

source /etc/profile

运行java -version查看是否成功

java -version #以下是输出 java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

修改一下主机映射

sudo vim /etc/hosts #添加以下内容 192.168.10.51 centos01 192.168.10.52 centos02 192.168.10.53 centos03

克隆出两个节点,命名为centos02,centos03,修改他们的主机名和ip,就不多赘述了 免密登陆 分别在三个节点上执行以下命令:

ssh localhost cd ~/.ssh/ ssh-keygen -t rsa ssh-copy-id centos01 ssh-copy-id centos02 ssg-copy-id centos03

配置Haddop 在centos01上修改profile环境变量,其他两个节点不需要

sudo vim /etc/profile #以下是修改内容 export JAVA_HOME=/opt/modules/jdk1.8.0_261 export HADOOP_HOME=/opt/modules/hadoop-2.7.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

可以直接复制粘贴修改之前的内容 现在进入hadoop-2.7.1/etc/hadoop目录,修改以下配置文件:

cd /opt/modules/hadoop-2.7.1/etc/hadoop/ vim hadoop-env.sh vim mapred-env.sh vim yarn-env.sh #在头部加入以下内容 export JAVA_HOME=/opt/modules/jdk1.8.0_261

下面修改core-site.xml文件

vim core-site.xml #修改为以下内容 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://centos01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/modules/hadoop-2.7.1/tmp</value> </property> </configuration>

fs.defaultFS: HDFS的默认访问路径,也是NameNode的访问地址 hadoop.tmp.dir: Hadoop临时数据文件的存放文件,如果不配置,默认指向/tmp目录,linux系统重启之后会被自动清空

下面修改hdfs-site.xml

vim hdfs-site.xml #修改为以下内容 <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/modules/hadoop-2.7.1/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/modules/hadoop-2.7.1/tmp/dfs/data</value> </property> </configuration>

dfs.replication: 文件在HDFS系统中的副本数 dfs.permissions.enabled: 检查用户权限 dfs.namenode.name.dir: NameNode节点数据在本地文件系统的存放位置 dfs.datanode.data.dir: DataNode节点数据在本地问及那系统的存放位置

下面修改slaves文件

vim slaves #修改为以下内容 centos01 centos02 centos03

下面复制mapred-site.xml.template为mapred-site.xml,并修改内容

cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml #修改为以下内容 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

修改 vim yarn-site.xml

vim yarn-site.xml #修改为以下内容 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>centos01:8032</value> </property> </configuration>

将修改好的hadoop包传给其他节点(所以上面多解压了几次,不过就不管了,不影响)

scp -r /opt/modules/hadoop-2.7.1/ hadoop@centos02:/opt/modules/ scp -r /opt/modules/hadoop-2.7.1/ hadoop@centos03:/opt/modules/

格式化namenode

hadoop namenode -format

开启hadoop集群!

start-all.sh

查看java进程

jps

三个节点情况应该是上面这种情况,不使用集群要记得使用命令关闭:

stop-all.sh

测试 HDFS 在主节点上执行以下命令,在HDFS根目录创建input,并将hadoop安装目录下的文件README.txt上传到新建input文件夹中

hdfs dfs -mkdir /input hdfs dfs -put /opt/modules/hadoop-2.7.1/README.txt /input

测试 MapReduce 测试hadoop自带的mapreduce单词计数程序,统计/input文件夹中的所有文件的单词数目

cd /opt/modules/hadoop-2.7.1/share/hadoop/mapreduce/ hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

统计完成之后,用以下命令检查

hdfs dfs -cat /output/*

你将会看到所有的单词以及它们的数目,到此就说明hadoop搭建成功啦!

注意:

1、上面的scp -r命令是不能覆盖文件夹内容的,所以你重新修改hadoop的配置文件和删改文件(夹)之后要先把其他节点的hadoop文件删除了之后再用scp命令 2、使用mapreduce命令时,要严格的使用上面的代码,否则会出现路径出错问题

最新回复(0)