Hadoop简介
Hadoop优点
1.高可靠性:Hadoop按位存储和处理数据
2.高扩展性:Hadoop是在计算机集群中完成计算任务,这个集群可以方便的扩展到几千台
3.高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度快
4.高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配
5.低成本:Hadoop是开源的,集群是由廉价的PC机组成
Hadoop架构和组件
Hadoop是一个分布式系统基础架构,底层是HDFS(Hadoop Distributed File System)分布式文件系统,它存储Hadoop集群中所有存储节点上的文件(64MB块),HDFS上一层是MapReduce引擎(分布式计算框架),对分布式文件系统中的数据进行分布式计算。
1.HDFS架构
NameNode:Hadoop集群中只有一个NameNode,它负责管理HDFS的目录树和相关文件的元数据信息
Sencondary NameNode:有两个作用,一是镜像备份,二是日志与镜像定期合并,并传输给NameNode
DataNode:负责实际的数据存储,并将信息定期传输给NameNode
2.MapReduce架构(Hadoop0.23以后采用MapReduce v2.0或Yarn)
Yarn主要是把jobtracker的任务分为两个基本功能:资源管理和任务调度与监控,ResourceManager和每个节点(NodeManager)组成了新处理数据的框架。
ResourceManager:负责集群中的所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各种应用程序(ApplicationMaster)。
NodeManager:与ApplicationMaster承担了MR1框架中的tasktracker角色,负责将本节点上的资源使用情况和任务运行进度汇报给ResourceManager。
Hadoop三种运行方式:单节点方式(单台)、单机伪分布方式(一个节点的集群)与完全分布式(多台组成集群)
准备环境
1.Hadoop是用Java开发的,必须要安装JDK1.6或更高版本
2.Hadoop是通过SSH来启动slave主机中的守护进程,必须安装OpenSSH
3.Hadoop更新比较快,我们采用最新版hadoop2.3来安装
4.配置对应Hosts记录,关闭iptables和selinux
5.创建相同用户及配置无密码认证
第一步:Hadoop下载
下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz
下载下来压缩包为hadoop-2.9.0.tar.gz。请使用tar -xzvf hadoop-2.9.0.tar.gz解压至/opt目录
第二步:安装前准备
修改每台服务器主机名
vim /etc/hostname
修改防火墙
systemctl stop firewalld.service #停止firewall
#systemctl disable firewalld.service #禁止firewall开机启动设置免密码登录(每台服务器必须重复以下步骤)
A.生成秘钥:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa #每台先执行一遍B.3台的id_dsa.pub都追加至authorized_keys(先从第一台hadoop1开始)
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop1上执行)
scp ~/.ssh/authorized_keys hadoop2:~/.ssh/
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop2上执行)
scp ~/.ssh/authorized_keys hadoop3:~/.ssh/
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (#hadoop3上执行)
scp ~/.ssh/authorized_keys hadoop1:~/.ssh/
scp ~/.ssh/authorized_keys hadoop2:~/.ssh/切记保持三台服务器的~/.ssh/known_hosts中的内容一致
- 配置环境变量
vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
source /etc/profile
export HADOOP_HOME=/opt/hadoop-2.9.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
第三步:安装配置
需要修改 /opt/hadoop-2.9.0/etc/hadoop 中的5个配置文件(更多设置项可点击查看官方说明):
1、yarn-env.sh
2、hadoop-env.sh
3、slaves(hadoop1、hadoop2、hadoop3需要与上文中的node1、node2、node3命名一致,本文因为原图丢失,用node代替)
4、core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop-2.9.0/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
5、hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop-2.9.0/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop-2.9.0/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
5、yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
6、mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>
将node1的/opt/hadoop-2.9.0打包并拷贝至node2和node3中
第四步:启动集群
- 格式化NameNode
./bin/hdfs namenode -format - 启动集群
启动hdfs:./sbin/start-dfs.sh
启动yarn:./sbin/start-yarn.sh - jps检查守护进程是否启动
- 查看集群状态
./bin/hdfs dfsadmin -report
出现 Live datanodes (3): 信息表示集群建立成功
第五步:停止集群
停止hdfs:./sbin/stop-dfs.sh
停止yarn:./sbin/stop-yarn.sh
第六步:浏览器查看Yarn和HDFS
yarn界面: http://10.100.96.138:8088
hdfs界面: http://10.100.96.138:50070
问题及解决方案
- 报错:Permission denied, please try again.
A.修改 /etc/ssh/sshd_config文件,将PermitRootLogin no改为yes
B.检查免密登录生成的key是否拷贝成功 - 报错:AVA_HOME is not set and could not be found.
A.配置/etc/profile环境变量:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
B.检查hadoop-env.sh、yarn-env.sh中的环境变量:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64