Hadoop集群的搭建
MapReduce 是多进程
Spark 是多线程
1.Hadoop是什么
1)Hadoop是一个由Apache基金会所开发分布式系统基础架构
2)主要解决,海量数据的存储和海量数据的分析计算问题
3)广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈
2.Hadoop 组成
1)Common 辅助工具
2)HDFS 数据储存
3)Yarn 资源调度
4)MapReduce 计算
3.HDFS 架构概述
1)NameNode (NN)存储文件的元数据,如文件名, 文件目录结构,文件属性
2)DateNode(DN)存储文件块数据,块数据校验和
3) SecondaryNameNode (2NN)每隔一段时间对NameNode元数据备份
4.Yarn 架构概述
1)ResourceManger
2)NodeManger
3)ApplicationMaster
4)Contaniner
Client 提交任务,ResourceManger 负责处理客户请求,监控NodeManger, 资源调度和分配。NodeManger 管理每个节点上的资源。ApplicationMaster 负责数据的切分,container 作为容器。
5.MapReduce
MapReduce将计算过程分为两个阶段:Map 和 Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果汇总
6.Hadoop 集群搭建步骤
-
准备模板机 hadoop100
-
设置 C/Windows/System32/drivers/etc/hosts 设置虚拟机ip
-
vim /etc/hosts 添加虚拟机ip
192.168.6.100 hadoop100
192.168.6.101 hadoop101
192.168.6.102 hadoop102
192.168.6.103 hadoop103
192.168.6.104 hadoop104
192.168.6.105 hadoop105
192.168.6.106 hadoop106
192.168.6.107 hadoop107
192.168.6.108 hadoop108 -
查看 /opt/是否创建 software (存放 JDK 和 Hadoop压缩包)和 module (存放解压包)
cd /opt/ 没有的话,则创建路径:mkdir software
-
模板机检查完成,开始克隆(先克隆一台)
-
修改克隆虚拟机的hostname 和 hosts ip:指令 vim /etc/hostname vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
xshell 登录虚拟机,cd /opt/ 查看安装包,xftp5 导入压缩包,然后解压到module,先装JDK,再装Hadoop
解压指令(在software目录下):tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ (-C指定路径) -
配置JDK环境变量:在/etc/profile.d/ 路径下创建自己的环境变量文件 sudo vim/etc/profile.d/my_env.sh
-
测试 JDK 是否安装成功 java -version,出现版本号就表示安装成功了
-
解压hadoop:tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
-
制作同步工具 xsync.sh, 在william (用户) cd /home/william/ 下创建bin目录, 然后放入我们的 xsync.sh
说明:在/home/william/bin这个目录下存放的脚本,william用户可以在系统任何地方直接执行。 -
修改脚本 xsync 具有执行权限, chmod +x xsync
-
将脚本复制到/root中的 /bin中,以便全局调用 sudo cp xsync /bin/ (/root路径下,没有/home路径)
-
克隆2台 hadoop102,测试xsync,xsync /home/william/bin,sudo xsync /bin/xsync
-
配置免密登录[william@hadoop102 .ssh]$ ssh-keygen -t rsa 然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)将公钥拷贝到要免密登录的目标机器上
[william@hadoop102 .ssh]$ ssh-copy-id hadoop102
[william@hadoop102 .ssh]$ ssh-copy-id hadoop103
[william@hadoop102 .ssh]$ ssh-copy-id hadoop104
-
至此三台虚拟机已经准备完毕,可以开始搭建集群,在搭建集群前要构建好如何放置 HDFS 和 Yarn的重要组成部分。HDFS = NameNode + DataNode+SecondaryNode Yarn = ResourceManger + NodeManger +…
NameNode ResourceManger SecondaryNameNode 分别在三台机器上, 每台机器都需要配置 DataNode 和 NodeManger -
自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 四个配置文件。修改完以后纷发文件到其他虚拟机 xsync
-
然后配置workers文件,删除文件中localhost,加入自己的三台虚拟机。注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
-
如果集群是第一次启动,需要在hadoop102节点格式化NameNode:hdfs namenode -format
使用指令启动集群:start-dfs.sh (在102上) start-yarn.sh (在103上) -
Web端查看自己的HDFS (端口号 9870) 和 Yarn (端口号8088)hadoop102:9870 hadoop103:8088
因为HDFS配置在102,NameNode配置在hadoop102。Yarn ResourceManger 配置在 hadoop103中。所以web端查看的时候是 hadoop102:9870 hadoop103:8088。 -
配置日志聚集:在yarn-site.xml 中添加,修改完以后纷发文件到其他虚拟机 xsync,配置群起群停
-
测试集群是否搭建成功,上传文件取HDFS, 在计算,查看返回结果
[william@hadoop102 ~]$ hadoop fs -mkdir /input
[william@hadoop102 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input
执行wordcount 程序
[william@hadoop102 hadoop-3.1.3]$ hadoop
jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input
/output[william@hadoop102 hadoop-3.1.3]$ hadoop
jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input
/output