知识要点:
什么是Hadoop
运行Hadoop先决条件
安装配置Hadoop
什么是Hadoop(Hadoop技术分享版本:Apache Hadoop 2.8.5
)
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:
- HDFS为海量的数据提供了存储
- MapReduce则为海量的数据提供了计算
准备环境
- Java Development Kit8(JDK8)
- CentOS7.4、虚拟机三台(分布式)或者一台虚拟机(单节点)
硬件要求
16G或者16G+内存,4核-8核CPU,200GB硬盘空间
先决条件(版本选择)
HBase和Hadoop版本对应
Hadoop版本 | HBase-1.2.x,HBase-1.3.x | HBase-1.4.x | HBase-1.5.x | HBase-2.0.x | HBase-2.1.x | HBase-2.2.x |
---|---|---|---|---|---|---|
Hadoop-2.4.x | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.5.x | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.6.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.6.1+ | 支持 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 |
Hadoop-2.7.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.7.1+ | 支持 | 支持 | 不支持 | 支持支持 | 不支持 | |
Hadoop-2.8.[0-2] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.8.[3-4] | 未测试 | 未测试 | 不支持 | 支持 | 支持 | 不支持 |
Hadoop-2.8.5+ | 未测试 | 未测试 | 支持 | 支持 | 支持 | 支持 |
Hadoop-2.9.[0-1] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.9.2+ | 未测试 | 未测试 | 支持 | 未测试 | 未测试 | 支持 |
Hadoop-3.0.[0-2] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-3.0.3+ | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 |
Hadoop-3.1.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-3.1.1+ | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 支持 |
HBase与JDK
HBase版本 | JDK 7 | JDK 8 | JDK 9 | JDK 10 | JDK 11 |
---|---|---|---|---|---|
2.0+ | 不支持 | 支持 | 未测试 | 未测试 | 未测试 |
1.2+ | 支持 | 支持 | 未测试 | 未测试 | 未测试 |
安装配置Hadoop
Hadoop安装步骤易记总结:442阵型里有7个小矮人(只针对想自己安装hadoop体验受虐过程的,如果使用CDH或其他商业发行版中集成的安装工具,可以略过此步骤)。该步骤同样适用于其他版本的Apache Hadoop
下载和解压
# 下载文件
$bin wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
# 解压文件
$bin tar xvzf hadoop-2.8.5.tar.gz
# 把解压好的目录移动到你的软件目录
$bin mv ./hadoop-2.8.5 /path/to/你的软件目录
Linux系统设置
- 创建用户
$bin useradd hadoop
- 修改linux配置文件
192.168.56.105 master
192.168.56.107 docker01
192.168.56.109 docker02
修改/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=你的主机名
- 关闭防火墙
$bin systemctl stop firewalld.service
$bin systemctl disable firewalld.service
-
设置免密登录
打开sshd服务
编辑/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启sshd服务
$bin systemctl restart sshd.service
设置免密
$bin su hadoop
# 在master主机上生成RSA公私钥对
$bin ssh-keygen -t rsa
# 到hadoop用户的用户目录下的.ssh目录
$bin cd ~/.ssh
# 生成authorized_keys文件
$bin cat id_rsa.pub >> authorized_keys
# 对authorized_keys文件进行权限修复
$bin chmod 644 ./authorized_keys
# 分发authorized_keys到docker01 docker02
$bin ssh-copy-id hadoop@docker01
$bin ssh-copy-id hadoop@docker02
# 在主机上对免密登录进行测试,除第一外后面再登录都不需要输入登录密码
# master主机上免密登录到docker01
$bin ssh docker01
# master主机上免密登录到docker02
$bin shh docker02
Hadoop设置
- 设置目录权限
$bin chown -R hadoop:hadoop /usr/local/bigdata/hadoop-2.8.5
- 准备Hadoop数据目录
$bin cd
$bin mkdir -p ./hdfs/name ./hdfs/data
- 修改Hadoop配置文件
配置文件目录路径:/path/to/hadoop-2.8.5/etc/hadoop
①hadoop-env.sh
②yarn-env.sh
③core-site.xml
④hdfs-site.xml
⑤mapred-site.xml
⑥yarn-site.xml
⑦slaves
hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171
export HADOOP_PREFIX=/usr/local/bigdata/hadoop-2.8.5
yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.home.dir</name>
<value>file:/usr/local/bigdata/hadoop-2.8.5</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hdfs</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/slaves</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapred.job.tracker.http.address</name>
<value>master:50030</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>master:50060</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
slaves
docker01
docker02
- 节点分发
$bin scp -r /usr/local/bigdata/hadoop-2.8.5 docker01:/usr/local/bigdata
$bin scp -r /usr/local/bigdata/hadoop-2.8.5 docker02:/usr/local/bigdata
验证
- 初始化Hadoop
对namenode进行格式化(必须在主节点上进行)
hdfs namenode -format
- 启动服务
# 第一种启动方式
$bin start-all.sh
# 第二种启动方式
$bin start-dfs.sh
$bin start-yarn.sh
正常启动有五个进程:
NameNode
SecondaryNameNode
ResourceManager
NodeManager
DataNode
DFS WebUI地址:http://192.168.56.105:50090/
Yarn WebUI地址:http://192.168.56.105:8088/
页面正常,说明服务正常启动。可以进行下一步验证,如执行一条hdfs命令:
# 查看hdfs系统中的目录或者文件
$bin hdfs dfs -ls /
注:大家学习的时候一定要对照好版本,并且如果自己练习的话,应该与我的节点架构是一样的,这样才能避免学习的时候遇到一些没有必要的麻烦!