任务详情:
一、搭建HA的Hadoop集群并验证,3节点(1主2从),理解HA/Federation,并截图记录搭建过程
二、阅读Google三大论文,并总结
三、Hadoop的作用(解决了什么问题)/运行模式/基础组件及架构
四、学会阅读HDFS源码,并自己阅读一段HDFS的源码(推荐HDFS上传/下载过程)
五、Hadoop中各个组件的通信方式,RPC/Http等
六、学会写WordCount(Java/Python-Hadoop Streaming),理解分布式/单机运行模式的区别
七、理解MapReduce的执行过程
八、Yarn在Hadoop中的作用
一、搭建HA的Hadoop集群并验证,3节点(1主2从),理解HA/Federation,并截图记录搭建过程 (参考另一位同学的)
1.建立ip与主机名的联系
在DW1、DW2、DW3上分别执行下面的代码:
//编辑hosts文件
vi /etc/hosts
//建立ip和host的映射关系
192.168.1.55 DW1
192.168.1.56 DW2
192.168.1.57 DW3
2. 关闭防火墙
在hadoop集群中会经常发生 机器和机器之间的交互,为了避免因为防火墙产生的意外故障,因此我们需要将防火墙关闭。
之前已经关闭过,可以验证一下:
# 关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state ##查看防火墙状态,是否是
3.配置集群SSH免密码登录
首先要在三台机器上配置对本机的ssh免密码登录,然后是配置三台机器之间的ssh免密码登录。
对于DW1、DW2和DW3,都执行如下操作(配置对本机的ssh免密码登录):
# 创建密钥,一直回车确定到结束即可,默认将公钥放在/root/.ssh目录下
ssh-keygen -t rsa
# 将公钥复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了
cd /root/.ssh/
cp id_rsa.pub authorized_keys
# 然后配置三台机器之间的ssh免密码登录,针对DW1,执行如下命令:
# 将本机公钥拷贝到指定机器的authorized_keys文件中
ssh-copy-id -i DW2
ssh-copy-id -i DW3
# 这时dw2和dw3已可以对dw1免密码登录
[root@DW1 ~]$ ssh DW2
[root@DW1 ~]$ ssh DW3
对DW2,DW3也进行相同地操作,保证3台设备可以免密互联.
4.hadoop的集群部署
(参考另一位同学的)
(1)Hadoop安装包下载
创建一个hadoop文件夹存放安装包:
[root@DW1 /] cd /usr/local
[root@DW1 local] mkdir hadoop
[root@DW1 local] cd hadoop
[root@DW1 hadoop] pwd
/usr/local/hadoop
通过命令行在虚拟机上下载:
[root@DW1 hadoop]# wget http://apache.claz.org/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
或者通过下载链接 手动下载到主机,再通过xshell及lrzsz等工具上传到虚拟机(我用的此方法 用xshell):
[root@DW1 hadoop]# yum install -y lrzsz
#通过rz命令进行上传
[root@DW1 hadoop]# rz
问题:在这里,我的3台虚拟机,换了一个WiFi以后,又连不上网了。。。所以这些上传下载的东西都无法正常进行。。。之前使用的桥联网络,百度了一下,说还是改成NAT比较好一些。所以在这里我又修改了网络连接方式为:NAT。但是各种问题还没改好。。
virtualbox centos 使用NAT模式上网
最后我觉得,还是先不要改成NAT模式了。每次连入不同的wifi,修改一下虚拟机的默认网关跟现在主机的一致即可。
此外,在这过程中,遇到重启网卡失败,搜了好久都没解决,就没管了。。。这个解决方案有点用。
直接用reboot重启一下代替 service network restart了。。。
[root@DW1 hadoop] tar -xzvf hadoop-3.2.0.tar.gz
添加HADOOP_HOME,修改环境变量:
[root@DW1 ~] vi /etc/profile
# 添加以下内容
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0 #这个路径要是解压所在文件夹
exprot PATH=$PATH:$HADOOP_HOME/bin
# 重启环境
[root@DW1 ~] source /etc/profile
检验是否安装成功:
[root@DW1 hadoop] hadoop -version
出错:最开始安装java jdk时,其实就应该添加JAVA_HOME环境变量。
(1)找到java的JDK安装路径
问题:一开始就还是应该手动安装JAVA。安装与卸载JDK
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin
##在HADOOP_HOME后面添加JAVA jdk路径
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin
再检验是否安装成功: 成功
[root@DW1 hadoop] hadoop -version
(2)修改hadoop的配置
配置core-site.xml(主要就是hdfs的地址)
[root@DW1 hadoop-3.2.0]$ cd etc/hadoop
[root@DW1 hadoop] vi core-site.xml
#在最后添加以下内容
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://DW1:9000</value>
</property>
</configuration>
配置hdfs-site.xml
DW1为主节点,DW2、3为从节点,因此设置两个副本
[root@DW1 hadoop]# vi hdfs-site.xml
#在最后添加以下内容
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/data/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/data/datanode</value>
</property>
<property>
<name>dfs.tmp.dir</name>
<value>/usr/local/data/tmp</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>DW1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置slaves文件
[root@DW1 hadoop-3.2.0]$ vi slaves
# 添加从节点DW2,DW3(如果有默认的localhost,删掉即可)
DW2
DW3
配置hadoop-env.sh
#添加JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
配置yarn-env.sh
#同样添加添加JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
(3)完成对从节点的配置
创建data文件夹(DW2,DW3也要创建)
# /usr/local 下创建data文件夹
[root@DW1 local]# mkdir data
将hadoop拷贝到DW2,DW3
[root@DW1 local]# scp -r hadoop DW2:/usr/local
[root@DW1 local]# scp -r hadoop DW3:/usr/local
同时DW2,DW3也要配置换环境等
#进行检验
[root@DW2 local]# java -version
[root@DW2 local]# hadoop -version
(4)集群启动
#在DW1上节点格式化
[root@DW1 ~]# hdfs namenode -format
#启动集群
[root@DW1 ~]# start-dfs.sh
(以上过程还有一些问题,明天一起处理解决。。。)
二、阅读Google三大论文,并总结
参考链接
三、Hadoop的作用(解决了什么问题)/运行模式/基础组件及架构
hadoop生态系统的详细介绍
(1)Hadoop生态系统
(2)、HDFS(Hadoop分布式文件系统)
HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
(3)、Mapreduce(分布式计算框架)
MapReduce是一种计算模型,用以进行大数据量的计算。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。
(4)、Hive(基于Hadoop的数据仓库)
由facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL(传统数据库)增 删 改 查 将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
(5)、Hbase(分布式列存数据库)
HBase是一个针对结构化数据的可伸缩、高可靠、高性能、同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。开源免费
(6)、Zookeeper(分布式协作服务)
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。用作分布式协调
(7)、Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据(数据迁移) 数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
(8)、Pig(基于Hadoop的数据流系统)
由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具 通常用于进行离线分析。
(9)、Flume(日志收集工具)
Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。
四、学会阅读HDFS源码,并自己阅读一段HDFS的源码(推荐HDFS上传/下载过程)
HDFS源码分析(2)----HDFS源码结构
Hadoop之HDFS原理及文件上传下载源码分析(上)
五、Hadoop中各个组件的通信方式,RPC/Http等
Hadoop之——RPC通信实例
六、学会写WordCount(Java/Python-Hadoop Streaming),理解分布式/单机运行模式的区别
hadoop学习笔记——用python写wordcount程序
Hadoop学习记录之WordCount运行
七、理解MapReduce的执行过程
通俗易懂地理解MapReduce的工作原理
MapReduce 原理及执行过程
图解mapreduce原理和执行过程
八、Yarn在Hadoop中的作用
真正明白yarn
学习Hadoop生态第一步:Yarn基本原理和资源调度解析
(内容好多。。还没完全看完。。)