最近在学习大数据技术,我把实验过程写在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命令时,要严格的使用上面的代码,否则会出现路径出错问题