简介:
- Hadoop集群包括两个集群:HDFS集群和YARN集群。
- 两个集群逻辑上分离、通常物理上在一起。
一:相关文档
- Hadoop安装包下载地址:
- 安装使用 VMware 创建三台虚拟机。
- 三台虚拟机做好免密登录。(参考文档:
SSH设置免密登录(centos7)_ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa_潮听哥的博客-CSDN博客
) - 修改三台主机hostname(参考文档: )。
- 安装jdk。(参考文档: )
- 每分钟执行一次时间同步 crontab -e ; */1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
二:开始安装
- 修改主机名(3台机器)
vim /etc/hostname 输入node1或node2或node3
- Hosts映射(3台机器)
vim /etc/hosts 192.168.106.3 node1 192.168.106.4 node2 192.168.106.5 node3
- 防火墙关闭(3台机器)
systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service #禁止防火墙开机自启
- ssh免密登录
注意:第一轮一次执行完后,再执行第二轮 node1 第一轮: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa scp ~/.ssh/id_dsa.pub root@node2:/home/id_dsa_node1.pub scp ~/.ssh/id_dsa.pub root@node3:/home/id_dsa_node1.pub 第二轮: cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node2.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node3.pub >> ~/.ssh/authorized_keys node2 第一轮: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa scp ~/.ssh/id_dsa.pub root@node1:/home/id_dsa_node2.pub scp ~/.ssh/id_dsa.pub root@node3:/home/id_dsa_node2.pub 第二轮: cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node1.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node3.pub >> ~/.ssh/authorized_keys node3 第一轮: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa scp ~/.ssh/id_dsa.pub root@node1:/home/id_dsa_node3.pub scp ~/.ssh/id_dsa.pub root@node2:/home/id_dsa_node3.pub 第二轮: cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node2.pub >> ~/.ssh/authorized_keys cat /home/id_dsa_node1.pub >> ~/.ssh/authorized_keys
- 集群时间同步(3台机器)
每分钟执行一次时间同步 crontab -e */1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
- JDK安装(3台机器)参考上面文档
- 下载编译好的hadoop安装包 hadoop-3.3.4.tar.gz 并解压
tar -zxf hadoop-3.3.4.tar.gz mv hadoop-3.3.4 /usr/local
- hadoop目录介绍
- 修改配置文件 hadoop-env.sh
vim /usr/local/hadoop-3.3.4/etc/hadoop/hadoop-env.sh 文档末尾添加 export JAVA_HOME=/usr/local/java 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
- 修改配置文件 core-site.xml
vim /usr/local/hadoop-3.3.4/etc/hadoop/core-site.xml <configuration> <!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 --> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <!-- 设置Hadoop本地保存数据路径 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/data/hadoop-3.3.4</value> </property> <!-- 设置HDFS web UI用户身份 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 整合hive 用户代理设置 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <!-- 文件系统垃圾桶保存时间 --> <property> <name>fs.trash.interval</name> <value>1440</value> </property> </configuration>
- 修改配置文件 hdfs-site.xml
vim /usr/local/hadoop-3.3.4/etc/hadoop/hdfs-site.xml <configuration> <!-- 设置SNN进程运行机器位置信息 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node2:9868</value> </property> </configuration>
- 修改配置文件 mapred-site.xml
vim /usr/local/hadoop-3.3.4/etc/hadoop/mapred-site.xml <configuration> <!-- 设置MR程序默认运行模式:yarn集群模式 local本地模式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MR程序历史服务地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <!-- MR程序历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> </configuration>
- 修改配置文件 yarn-site.xml
vim /usr/local/hadoop-3.3.4/etc/hadoop/yarn-site.xml <configuration> <!-- 设置YARN集群上主角色运行机器位置 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 是否将对容器实施物理内存限制 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!-- 是否将对容器实施虚拟内存限制 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 开启日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置yarn历史服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://node1:19888/jobhistory/logs</value> </property> <!-- 历史日志保存的时间 7天 --> <property> <name>yarn.log-aggregation-retain-seconds</name> <value>604800</value> </property> </configuration>
- 修改配置文件 workers
vim /usr/local/hadoop-3.3.4/etc/hadoop/workers node1 node2 node3
- 分发同步hadoop安装包
scp -r /usr/local/hadoop-3.3.4 root@node2:/usr/local/ scp -r /usr/local/hadoop-3.3.4 root@node3:/usr/local/
- 讲hadoop添加到环境变量(3台机器)
vim /etc/profile export HADOOP_HOME=/usr/local/hadoop-3.3.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile ---同步给另外两台机器 scp /etc/profile node2:/etc/ scp /etc/profile node3:/etc/
- NameNode format (格式化操作)
*. 首次启动HDFS时,必须对其进行格式化操作。 *. format 只能进行一次,后续不再需要。 *. format 本质上是初始化工作,进行HDFS清理和准备工作。 *. 执行命令: hdfs namenode -format 注意:如果多次format除了造成数据丢失外,还会导致hdfs集群主从角色之间互不识别。通过删除所有机器hadoop.tmp.dir目录重新format解决。
出现successfully fromatted,表示格式化成功!
- 集群启动
*. HDFS集群 start-dfs.sh stop-dfs.sh *. YARN集群 start-yarn.sh stop-yarn.sh *. HDFS集群 start-all.sh stop-all.sh
- 确定启动是否成功
- Hadoop 启动日志路径:/usr/local/hadoop-3.3.4/logs
- HDFS 集群地址:http://node1:9870/
- YARN 集群地址:http://node1:8088/cluster
- 至此hadoop hdfs、yarn集群已经搭建完成!
三:HDFS初体验
shell命令操作 |
创建目录:hadoop fs -mkdir /test |
上传文件:hadoop fs -put aaa.txt /test |
查看目录:hadoop fs -ls / |
四:MapReduce+YARN 初体验
- 执行hadoop官方自带的MapReduce案例,评估圆周率π的值
cd /usr/local/hadoop-3.3.4/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 2 4