学习目标:
- 完整版搭建hadoop集群(在三台机器上搭建)
- 搭建HDFS系统
- 在root用户下
搭建Hadoop(版本号 Hadoop3.2.1)环境依赖:
- 需要三台主机实现ssh免密
- .实现三台主机时钟同步
- 需要设置java环境变量
- 需要三台linux主机,编号为 001,002,003
001: 192.168.152.44
002: 192.168.152.33
003: 192.168.152.22 - 需要Hadoop安装包(3.2.1版本)
操作步骤:
1.实现三台主机ssh免密(三台主机共用一套ssh密钥)
1. 首先机器上需要有ssh服务,如果没有,使用 yum -y install ssh下载
2. 选择001主机进行免密操作,首先使用命令 ssh-keygen 生成公私钥,使用默认配置即可(一直回车)
3. 使用 ll -a 来查看是否生成,后缀名为 .ssh
4. cd .ssh进入该文件夹,使用 cat id_rsa.pub >> authorized_keys,将自己的公钥放到 authorized_keys文件里边
5.使用远程文件传输命令scp将 该 .ssh文件拷贝到另外两台主机中
scp -r .ssh root@192.168.152.22:/root/
scp -r .shh root@192.168.152.33:/root/
6.验证: 在 001主机使用 ssh 192.168.152.22命令后,成功登录 003号主机。
-
实现三台主机时钟同步
1. 选择 001 主机作为本地时钟服务器,(三台主机需要下载 ntp ntpdate服务,自行下载) 2. 让 001 主机定时更新时钟,vi /etc/crontab/文件写入 */ 1 * * * * root ntpdate -u ntp5.aliyun.com
4. 开启时钟服务器: systemctl start ntpd.service
5. 关闭防火墙 : sysytemctl stop firewalld;sysytemctl disable firewalld
6. 重新加载 crond.service : systemctl reload crond.service
7. 让 002,003主机中自动校正时间,与本地服务器同步。vi /etc/crontab/文件中写入*/ 1 * * * * root ntpdate -u 192.168.152.44,保存退出
8. 分别重新加载 crond.service : systemctl reload crond.service
9. 时钟服务器搭建完毕
-
设置java环境变量
1,java安装包下载到/usr/java/jdk1.8.0_131/ 在 /etc/profile中设置环境变量 export JAVA_HOME=/usr/java/jdk1.8.0_131 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOMElib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 更新配置服务 source etc/profile
4.解压 Hadoop安装包到 /usr 目录下 : rpm -ivh hadoop-3.2.1.rmp /usr
5.配置 Hadoop 环境变量
export HADOOP_HOME=/usr/hadoop/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
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
更新配置服务 source etc/profile
6,开始搭建 Hadoop 集群框架(确保所有主机防火墙关闭状态)
1,首先添加一些主机映射关系 vi /etc/hosts
192.168.152.44 nihuan003
192.168.152.22 nihuan
192.168.152.33 nihuan002
保存退出
2,需要配置几个关键文件:
a 配置 hadoop-env.sh文件
# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/java/jdk1.8.0_131
b 配置 core-site.xml 文件 确定 临时文件夹的位置和 master 主机
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file://usr/hadoop/hadoop-3.2.1/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nihuan003</value>
</property>
</configuration>
c 配置 hdfs-site.xml ,确定 分块大小,副本集个数,冷备机等
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>nihuan002:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-3.2.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-3.2.1/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>1M</value>
</property>
</configuration>
d,配置 workers:确定工作机
nihuan
e,配置 yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>nihuan003</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>
f,配置 mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
g,使用 scp 命令将配置好的Hadoop拷贝给另外两台主机
scp -r /usr/hadoop root@nihuan002:/usr/
scp -r /usr/hadoop root@nihuan:/usr/
3,配置完毕后,进行格式化:使用命令 hdfs namenode -format ,至此集群搭建完毕
7,启动 hdfs 服务:
start-dfs.sh start-all.sh
学习时间:
1、 周一至周五早上9点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点
学习产出:
出现该错误的原因可能是主机的 /etc.hosts文件中关于主机的的映射关系出现错误 第二个错误可能是 ssh免密配置错误,没有全部配置ssh免密
出现该错误的原因可能是 Hadoop的 etc/hadoop/hadoop-env.sh中没有设置Java的主目录路径,或者路径设置在错误的地方