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