完整版搭建hadoop集群
学习目标:
- 完整版搭建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.service5. 关闭防火墙 : sysytemctl stop firewalld;sysytemctl disable firewalld6. 重新加载 crond.service : systemctl reload crond.service7. 让 002,003主机中自动校正时间,与本地服务器同步。vi /etc/crontab/文件中写入*/ 1 * * * * root ntpdate -u 192.168.152.44,保存退出8. 分别重新加载 crond.service : systemctl reload crond.service9. 时钟服务器搭建完毕
-
设置java环境变量
1,java安装包下载到/usr/java/jdk1.8.0_131/ 在 /etc/profile中设置环境变量export JAVA_HOME=/usr/java/jdk1.8.0_131export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOMElib:$CLASSPATHexport 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.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root更新配置服务 source etc/profile
6,开始搭建 Hadoop 集群框架(确保所有主机防火墙关闭状态)
1,首先添加一些主机映射关系 vi /etc/hosts192.168.152.44 nihuan003192.168.152.22 nihuan192.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_131b 配置 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:确定工作机nihuane,配置 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的主目录路径,或者路径设置在错误的地方