目录
hadoop版本介绍
目前,hadoop已经演变为大数据计算的代名词,形成了一套完善的大数据计算的生态系统,所以针对hadoop也出现了很多版本
Apache hadoop 官方版本
Cloudera hadoop(CDH) 使用下载最多的版本,稳定,有商业支持(收费),在Apache的基础上打上了一些patch。
推荐使用。 HortonWorks(HDP) 基于Apache的版本进行了集成,结合Ambari可以实现平台化快速安装部署。
hadoop组件介绍
hadoop是一个统称,目前hadoop主要包含三大组件
- hdfs:是一个分布式存储框架,适合海量数据存储
- mapreduce:是一个分布式计算框架,适合海量数据计算
- yarn:是一个资源调度平台,负责给计算框架分配计算资源
hdfs架构分析
负责数据的分布式存储
主从结构
主节点,最多可以有2个:namenode
从节点,有多个:datanode
namenode负责
接收用户操作请求,是用户操作的入口 维护文件系统的目录结构,称作命名空间
datanode负责
存储数据
yarn架构分析
mapreduce架构分析
mapreduce是一个编程模型,它是分布式运行的
由两个阶段组成:
- Map和Reduce Map阶段是一个独立的程序,有很多个节点同时运行,每个节点处理一部分数据。
- Reduce阶段也是一个独立的程序,在这先把reduce理解为一个单独的聚合程序即可。
hadoop特点
- 扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
- 成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
- 高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
- 可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务.
hadoop生态圈介绍
服务器节点规划
hadoop安装脚本
集群节点规划
hadoop100
hadoop101
hadoop102
实现一主两从的集群
hadoop100:主节点[nameNode,resourceManager,secondaryNamenode]
hadoop101:从节点[dataNode,nodeManager]
hadoop102:从节点[dataNode,nodeManager]
1:首先需要对这三台机器的基础环境进行配置,按照伪分布集群的机器的基础环境进行配置
hadoop100的基础环境已经配置完成
主要针对hadoop101 和hadoop102进行配置
针对ip、java、hostname、hosts、iptables、chkconfig、ssh、免密码登录这几个配置,按照伪分布文档中的配置进行修改
【注意:ip信息不能和之前的一样】
注意:针对hosts的配置,这三台机器都需要修改
vi /etc/hosts
192.168.56.10 hadoop100
192.168.56.11 hadoop101
192.168.56.12 hadoop102
2:免密码登录:需要实现主节点免密登录到其他两个从节点
也就是hadoop100需要免密登录到hadoop101和hadoop102
首先在hadoop100上执行
scp ~/.ssh/authorized_keys hadoop101:~/
scp ~/.ssh/authorized_keys hadoop102:~/
然后在hadoop101和hadoop102上执行
cat ~/authorized_keys >> ~/.ssh/authorized_keys
3:集群各个节点的时间需要同步
使用ntpdate -u ntp.sjtu.edu.cn实现
默认是没有ntpdate命令的,需要使用yum在线安装
执行命令 yum install -y ntpdate
然后手动执行ntpdate -u ntp.sjtu.edu.cn 确认是否可以正常执行
Centos下如果时间不正确则需要设定一下时区.
soft]# ntpdate -u ntp.sjtu.edu.cn
29 Jul 00:52:13 ntpdate[2676]: adjust time server 84.16.73.33 offset -0.012444 sec
soft]#
soft]# date
Thu Jul 29 00:52:18 UTC 2021
soft]#
soft]# timedatectl set-timezone Asia/Shanghai
soft]#
soft]# date
Thu Jul 29 08:52:22 CST 2021
4:建议吧这个同步时间的操作写到linux的crontab定时器中[三台机器都需要添加]
vi /etc/crontab
* * * * * /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
5:重新安装hadoop集群
首先在hadoop100上安装hadoop
5.1:解压:tar -zxvf hadoop-2.7.5.tar.gz
5.2: 修改配置文件
vi hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
export HADOOP_CONF_DIR=/data/soft/hadoop-2.7.5/etc/hadoop/
vi yarn-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export YARN_LOG_DIR=/data/hadoop_repo/logs/yarn
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop_repo</value>
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop100:50090</value>
</property>
</configuration>
vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop100</value>
</property>
</configuration>
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi slaves
hadoop101
hadoop102
5.3 把hadoop100节点上的修改之后的hadoop拷贝到其他两个从节点
在hadoop100节点上执行
cd /data/soft/
scp -rq hadoop-2.7.5 hadoop101:/data/soft/
scp -rq hadoop-2.7.5 hadoop102:/data/soft/
5.4 在hadoop100节点上对hdfs进行格式化
hdfs namenode -format
5.5 启动集群
在hadoop100节点执行
cd /data/soft/hadoop-2.7.5
sbin/start-all.sh
二〇二一年七月二十九日 10:42:42 启动报错:
Cannot find configuration directory: /etc/hadoop
在hadoop环境变量配置中增加(hadoop-env.sh)
export HADOOP_CONF_DIR=/data/soft/hadoop-2.7.5/etc/hadoop/
5.6 验证
hadoop100 上会看到下面进程信息:
3848 NameNode
4026 SecondaryNameNode
4173 ResourceManager
hadoop-2.7.5]# jps
25411 ResourceManager
25221 SecondaryNameNode
26136 Jps
没有namenode?
我怀疑是因为hdfs 格式化的时候因为没有配置hadoop_confg_dir 报错。
Hadoop启动之后jps没有namenode节点的解决方法。
需要删除原目录,即core-site.xml下配置的hadoop.tmp.dir所指向的目录,即/data/hadoop_repo
重新hdfs namenode -format,再启动集群即可.
http://hadoop100:50070
http://hadoop100:8088
hadoop101 和 hadoop102 上会看到下面进程信息:
2167 NodeManager
2071 DataNode
5.7 停止集群
在hadoop100节点执行
cd /data/soft/hadoop-2.7.5
sbin/stop-all.sh