centos7+hadoop-3.1.0搭建分布式集群超详细教程

目录

一、新建虚拟机:

二、连接XSHell

三、修改主机名称和网络名称

四、关闭防火墙

五、关闭selinux

六、jdk的安装与卸载

七、hadoop的安装

八、克隆

九、配置slave1和slave2

十、ssh免密登录

十一、格式化节点

十二、启动hadoop集群


一、新建虚拟机:

参考教程:

https://blog.csdn.net/babyxue/article/details/80970526#commentBox

静态IP设置:

master

ip:192.168.100.10

网关:192.168.100.2

子网掩码:255.255.255.0

DNS:202.106.196.115

选择DNS为“手动”

设置root 密码123

设置qiao 密码123

二、连接XSHell

连接master

设置连接用户为root,密码为123

三、修改主机名称和网络名称

[root@master ~]# vim /etc/hosts

[root@master ~]# vim /etc/sysconfig/network

四、关闭防火墙

关闭:[root@master ~]# systemctl stop firewalld.service

禁止开机启动:[root@master ~]# systemctl disable firewalld.service

查看状态:[root@master ~]# firewall-cmd --state

五、关闭selinux

[root@master ~]# vim /etc/selinux/config

六、jdk的安装与卸载

1.查看

[root@master ~]# rpm -qa|grep jdk

2.卸载

[root@master ~]# yum -y remove java java版本

若遇到yum正在被占用:[root@master ~]# rm -f /var/run/yum.pid

3.将下载好的jdk通过xshell拖动到指定的文件夹中并将其解压

在root下创建文件夹java:[root@master ~]# mkdir java

将jdk解压到/root/java/:[root@master ~]# tar -zxvf jdk-8u45-linux-x64.tar.gz -C java

将压缩包删除:[root@master ~]# rm -rf jdk-8u45-linux-x64.tar.gz

4.配置环境

[root@master ~]# vim /etc/profile

JAVA_HOME=~/java/jdk1.8.0_45
JRE_HOME=~/java/jdk1.8.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME 
export JRE_HOME 
export CLASS_PATH 
export PATH

[root@master ~]# source /etc/profile

[root@master ~]# java -version

七、hadoop的安装

1.解压

将下载好的hadoop通过xshell拖动到master中

在root下创建文件夹hadoop:[root@master ~]# mkdir hadoop

将hadoop解压到/root/hadoop/:[root@master ~]# tar -zxvf hadoop-3.1.0.tar.gz -C ./hadoop/

2.配置环境

hadoop-3.1.0

[root@master ~]# vim /etc/profile

export HADOOP_HOME=~/hadoop/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

[root@master ~]# source /etc/profile

[root@master ~]# hadoop version

3.配置hadoop

(1)创建目录

在~/hadoop下创建目录

[root@master hadoop]# mkdir tmp

[root@master hadoop]# mkdir var

[root@master hadoop]# mkdir dfs

[root@master hadoop]# mkdir dfs/data

[root@master hadoop]# mkdir dfs/name

(2)修改配置文件

进入~/hadoop/下的hadoop-3.1.0/etc/hadoop/文件夹中

[root@master hadoop]# cd hadoop-3.1.0/etc/hadoop/

  • workers

[root@master hadoop]# vim workers

删除localhost 添加从节点的名称

  • hadoop-env.sh

[root@master hadoop]# vim hadoop-env.sh

在#  JAVA_HOME=/usr/java/testing hdfs dfs -ls下面添加如下内容:

export JAVA_HOME=~/java/jdk1.8.0_45
export HADOOP_HOME=~/hadoop/hadoop-3.1.0
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

以下配置在各个文件的<configuration></configuration>中添加

  • core-site.xml

[root@master hadoop]# vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
  • hdfs-site.xml

[root@master hadoop]# vim hdfs-site.xml

 

<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property> 
  • yarn-site.xml

在命令行输入如下命令,并将返回地址复制,在配置yarn-site.xml时会用到:

[root@master hadoop]# hadoop classpath

[root@master hadoop]# vim yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>输入刚才返回的Hadoop classpath路径</value>
</property>
  • mapred-site.xml

[root@master hadoop]# vim mapred-site.xml

 <property>
    <name>mapred.job.tracker</name>
    <value>master:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/root/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

八、克隆

将master分别克隆为slave1和slave2

九、配置slave1和slave2

1.配置静态IP

(1)配置slave1的静态IP:

在slave1的右上角点击:

点击红框内设置salve1的静态IP

将地址改为192.168.100.12 保存

打开slave1终端:

重启网络:[qiao@master ~]$ systemctl restart network.service

(注意 这时候slave1的主机名称还是master)

(2)配置slave2的静态IP:

修改方式与slave1一致

将地址改为192.168.100.13

(3)检测slave1和slave2是否能

[qiao@master ~]$ ping www.baidu.com

ping 192.168.100.11 检测master、slave1和slave2是否能相互两两ping通

2.修改主机名称

[root@master ~]# vim /etc/hostname

[root@master ~]# vim /etc/sysconfig/network

修改后重启slave1和slave2

十、ssh免密登录

注意:master、slave1和slave2都要在root下进行操作

(1)master:

a.[root@master ~]# ssh-keygen -t rsa

一直按回车直到该命令结束

分别在slave1和slave2上执行相同的操作

b.进入到/root/.ssh目录下

[root@master ~]# cd /root/.ssh

将 id_rsa.pub写入authorized_keys

[root@master .ssh]# cat id_rsa.pub >> authorized_keys

更改authorized_keys的权限

[root@master .ssh]# chmod 644 authorized_keys

c.将authorized_keys发送给slave1和slave2

[root@master .ssh]# scp authorized_keys slave1:/root/.ssh/

输入yes和slave1的密码即可

[root@master .ssh]# scp authorized_keys slave2:/root/.ssh/

(2)slave1:

a.进入到/root/.ssh路径下

[root@slave1 ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[root@slave1 .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[root@slave1 .ssh]# cat id_rsa.pub >> authorized_keys

d.将authorized_keys发送给slave2

[root@slave1 .ssh]# scp authorized_keys slave2:/root/.ssh/

(3)slave2:

a.进入到/root/.ssh路径下

[root@slave2 ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[root@slave2 .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[root@slave2 .ssh]# cat id_rsa.pub >> authorized_keys

d.将authorized_keys分别发送给master和slave1

[root@slave2 .ssh]# scp authorized_keys master:/root/.ssh

[root@slave2 .ssh]# scp authorized_keys slave1:/root/.ssh

(4)验证

在master上:

登录[root@master .ssh]# ssh slave1

登出[root@slave1 ~]# logout

十一、格式化节点

在master:

进入到~/hadoop/hadoop-3.1.0/sbin/路径下

[root@master ~]# cd hadoop/hadoop-3.1.0/sbin/

格式化节点

[root@master sbin]# hdfs namenode -format

运行后不报错并在倒数四五行出现successfully即为格式化节点成功

注意:在没有出现错误的情况下,节点格式化一次即可

十二、启动hadoop集群

master:

[root@master sbin]# ./start-all.sh

[root@master sbin]# jps

slave1、slave2:

[root@slave1 ~]# jps

在浏览器中:192.168.100.11:50070

运行一个样例程序:

hadoop中自带wordcount样例程序,现在运行它

(1)创建本地示例文件:

现在/root/hadoop下创建目录:

[root@master hadoop]# mkdir file

在file下创建两个文件file1.txt和file2.txt

[root@master hadoop]# cd file/

[root@master file]# echo "Hello World" > file1.txt

[root@master file]# echo "Hello Hadoop" > file2.txt

可以使用命令查看文件是否创建好

[root@master file]# more file1.txt

(2)在HDFS上创建输入文件夹input

先进入到/root/hadoop/hadoop-3.1.0/路径下

[root@master /]# cd /root/hadoop/hadoop-3.1.0

在HDFS上创建input文件夹

[root@master hadoop-3.1.0]# bin/hadoop fs -mkdir -p /input

查看是否创建成功

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /

(3)上传本地的file文件夹中的文件到集群的input目录下

[root@master hadoop-3.1.0]# bin/hadoop fs -put /root/hadoop/file/file*.txt /input/

查看是否上传成功

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /input/

(4)在集群上运行wordcount例子

在hadoop的安装环境下运行模糊查找命令,找到wordcount样例编译好的jar包的位置

[root@master hadoop-3.1.0]# find -name *example*

运行程序

[root@master hadoop-3.1.0]# bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount /input /output

查看output下的文件

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /output

查看运行的结果

[root@master hadoop-3.1.0]# hadoop fs -cat /output/part-r-00000

运行结束后关闭hadoop:

[root@master sbin]# ./stop-all.sh

若在关闭时遇到错误,再次运行该命令

补充:

删除hdfs上的文件:

[root@master hadoop-3.1.0]# bin/hdfs dfs -rm -r /output

错误:

之前在运行wordcount程序时,遇到错误:

这个意思是虚拟内存不足,修改配置文件yarn-site.xml

添加一下内容:

<property>  
    <name>yarn.nodemanager.vmem-check-enabled</name>  
    <value>false</value>  
</property> 

即将检查虚拟内存属性改为false

这样问题就解决了

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值