目录
Hadoop简介:
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要解决海量数据的存储和海量数据的分析计算问题。从广义上来说,Hadoop指的是一个更广泛的概念——Hadoop生态圈
Hadoop的优势:
(1)高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,
也不会导致数据的丢失。
(2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
(3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
(4)高容错性:能够自动将失败的任务重新分配。
(1)安装JDK和Hadoop
解压JDK和Hadoop到/opt/module目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ #解压JDK
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ #解压Hadoop3.1.3
(2)配置环境变量
# 新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
添加如下配置:
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 使环境变量生效
source /etc/profile.d/my_env.sh
(3)集群部署规划
节点名 IP地址 主机名
主节点 192.168.1.102 hadoop102
从节点 192.168.1.103 hadoop103
从节点 192.168.1.104 hadoop104
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
HDFS | NameNode | SecondaryName | |
DataNode | DataNode | DataNode | |
YARN | ResourceManager | ||
NodeManager | NodeManager | NodeMAnager |
(4)配置免密登录
ssh-keygen -t rsa # 生成公钥和私钥
ssh-copy-id hadoop102 # 将公钥拷贝到目标机器上
known_hosts | 记录ssh访问过计算机的公钥(public key) |
---|---|
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过得无密登录服务器公钥 |
(5)修改Hadoop配置文件
首先进入hadoop目录:
cd $HADOOP_HOME/etc/hadoop
1.vim hdfs-site.xml
<configuration>
<!--NameNode http服务器地址和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
<!-- 指定HDFS副本的数量:默认是3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
2.vim core-site.xml
<configuration>
<!--指定HDFS的NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!--指定Hadoop运行时产生文件的储存目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!--(可选)代理服务器的主机名用户连接-->
<property>
<name>hadoop.proxyuser.tan.hosts</name>
<value>*</value>
</property>
<!--(可选)代理服务器的用户组连接-->
<property>
<name>hadoop.proxyuser.tan.groups</name>
<value>*</value>
</property>
<!--访问web网页时的用户-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>tan</value>
</property>
</configuration>
3.vim yarn-site.xml
<configuration>
<!--Reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定YARN的ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!--容器可以覆盖的环境变量而不是使用NodeManager的默认变量-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,
CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
</value>
</property>
<!--每个容器请求的最小分配(以MB为单位)-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<!--每个容器请求的最大分配(以MB为单位)-->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!--作为yarn.nodemanager.resource.memory-mb属性,但对于MiniYARNCluster中的NodeManager-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!--是否对容器强制实施物理内存限制-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否对容器强制执行虚拟内存限制-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
4.vim mapred-site.xml
<configuration>
<!--用于MapReducedjobs运行时框架:可以是local,yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.vim workers
hadoop102
hadoop103
hadoop104
# 注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
(6)配置文件分发
cd /opt/module/ # 进入/opt/module/目录
scp -r jdk1.8.0_212/ 目标地址:/opt/module/ #分发JDK
scp -r hadoop-3.1.3/ 目标地址:/opt/module/ #分发Hadoop
sudo scp -r /etc/profile.d/my_env.sh 目标地址:/etc/profile.d/my_env.sh #分发环境变量配置
(7)集群启动
注:如果集群是第一次启动,需要格式化NameNode
(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除dfs和log数据)
1.格式化NameNode
cd $HADOOP_HOME #进入Hadoop的家目录下
bin/hdfs namenode -format #格式化命令
2.启动HDFS集群
sbin/start-dfs.sh # 在hadoop102执行
3.启动YARN集群
sbin/start-yarn.sh # 在hadoop103执行
(8)查看集群节点启动情况
1.jps查看
jps #查询节点启动情况
jpsall脚本搭建:可以同时查看多个集群上的启动节点
cd /home/tan/ #进入用户家目录
mkdir bin #新建一个bin目录
vim bin/jpsall #编写脚本
chmod +x jpsall #赋予可执行权限
jpsall 脚本代码编写如下:
#!/bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo "======== $i ========"
ssh $i "jps" | grep -v Jps
done
[tan@daoop102 hadoop]$ jpsall
======== hadoop102 ========
10016 DataNode
10777 NodeManager
9886 NameNode
======== hadoop103 ========
9088 ResourceManager
7817 DataNode
9230 NodeManager
======== hadoop104 ========
7792 DataNode
8443 NodeManager
7903 SecondaryNameNode
2.Web端查看
HDFS的Web页面:http://hadoop102:9870/
YARN的Web页面:http://hadoop103:8088/
Web端查看SecondaryNameNode信息:http://hadoop104:9868/
(9)Hadoop的目录结构
[tan@hadoop102 hadoop-3.1.3]$ ll
总用量 180
drwxr-xr-x. 2 tan tan 183 9月 12 2019 bin
drwxr-xr-x. 3 tan tan 20 9月 12 2019 etc
drwxr-xr-x. 2 tan tan 106 9月 12 2019 include
drwxr-xr-x. 3 tan tan 20 9月 12 2019 lib
drwxr-xr-x. 4 tan tan 288 9月 12 2019 libexec
-rw-rw-r--. 1 tan tan 147145 9月 4 2019 LICENSE.txt
-rw-rw-r--. 1 tan tan 21867 9月 4 2019 NOTICE.txt
-rw-rw-r--. 1 tan tan 1366 9月 4 2019 README.txt
drwxr-xr-x. 3 tan tan 4096 9月 12 2019 sbin
drwxr-xr-x. 4 tan tan 31 9月 12 2019 share
(1)bin目录:存放对Hadoop相关服务(HDFS、YARN)进行操作的脚本。
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件。
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)。
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本。
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例。
(6)logs目录:存放日志文件
(10)Hadoop官方文档说明:
https://hadoop.apache.org/docs/r3.1.3/
Java和Hadoop安装包下载链接:
链接:https://pan.baidu.com/s/1008xOtUT21xBdVYIL0t4Cw 提取码:1907
复制这段内容后打开百度网盘手机App,操作更方便哦