Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
Hadoop实现了一个分布式文件系统分布式文件系统/1250388?fromModule=lemma_inlink( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。Hadoop的框架最核心的设计就是:HDFS、MapReduce和Yarn。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算,Yarn负责资源调度,具体架构如图所示(以三台服务器为例)。
1、分布式文件系统HDFS
什么是文件系统?
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
常见的文件系统:
FAT:常见于Windows32位系统中。
NTFS:常见于Windows64位系统中。
HDFS(分布式文件系统)是大数据主流的文件系统,具有高容错、分布式等特点,解决海量数据存储问题。
2、安装Hadoop3.3.0
1、设置ip
一共三台服务器,分别是192.168.132.100/101/102,同时修改hostname和hosts并实现ssh免密登录
hosts内容如下:
192.168.132.100 hadoop100
192.168.132.101 hadoop101
192.168.132.102 hadoop102
其中 hadoop100为node1,hadoop101为node2,hadoop102为node3,对应上述第二张图
2、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
vi /etc/selinux/config —> SELINUX=disabled (修改)
3、设置免密登录
manager节点执行ssh-keygen -t rsa 一路回车到结束,在/root/.ssh/下面会生成一个公钥文件id_rsa.pub
将公钥追加到authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys 修改权限
将~/.ssh从当前节点分发到其他各个节点。如:
scp -r ~/.ssh/ root@hadoop102:~/.ssh/
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp -r ~/.ssh/ root@hadoop102:~/.ssh/
注意:各个节点之间相互ssh一遍
4、时间同步
yum -y install ntp
ntp主机配置 vi /etc/ntp.conf
132.100节点指向aliyun,其他节点指向100节点
重新启动 ntp 服务:service ntpd restart
设置开机自启:systemctl enable ntpd.service
ntpdc -c loopinfo #查看与时间同步服务器的时间偏差
ntpq -p #查看当前同步的时间服务器
ntpstat #查看状态
定时同步crontab
crontab -e
10 * * * * /usr/sbin/ntpdate hadoop100
5、新建文件夹server、data、soft**(三台都要做)**
mkdir -p /export/server/
mkdir -p /export/data/
mkdir -p /export/soft/
6、下载安装包
下载网址:http://archive.apache.org/dist/hadoop/common/
7、配置环境变量
注意:如果centos7带了jdk,需要先卸载jdk
- 执行 vim /etc/profile ,配置系统环境变量**(三台都要做)**
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/export/server/hadoop-3.3.0
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
配置完 source /etc/profile加载一下
- 配置hadoop环境变量
export JAVA_HOME=/usr/lib/jvm/java
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_SOURCEMANAGER_USER=root
export HDFS_NAMENAODEMANAGER_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
-
配置hadoop里的core-site.xml
<!-- 默认文件系统的名称--> <!-- file://本地文件系统 hdfs://hadoop分布式文件系统 gfs://--> <!-- hdfs文件系统访问地址: http://hadoop100:8020--> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop100:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/export/data/hadoop-3.3.0</value> </property> <!-- 默认使用root用户--> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>
-
配置hadoop里的hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>node2:9868</value> </property> </configuration>
-
配置hadoop里的mapred-site.xml(最后一个property,根据自己的classpath来,查看命令hadoop classpath)
<configuration>
<!-- MAPREDUCE程序默认运行方式。yarn集群模式 local本地模式-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR APP Master环境变量-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask环境变量-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR Reduce Task环境变量-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>/export/server/hadoop-3.3.0/etc/hadoop:/export/server/hadoop-3.3.0/share/hadoop/common/lib/*:/export/server/hadoop-3.3.0/share/hadoop/common/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs:/export/server/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs/*:/export/server/hadoop-3.3.0/share/hadoop/mapreduce/*:/export/server/hadoop-3.3.0/share/hadoop/yarn:/export/server/hadoop-3.3.0/share/hadoop/yarn/lib/*:/export/server/hadoop-3.3.0/share/hadoop/yarn/*
</value>
</property>
</configuration>
-
配置hadoop里的yarn-site.xml
<configuration> <!-- yarn集群主角色RM运行机器 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <!-- NodeManager上运行的附属服务,需要配置mapreduce_shuffle,才可运行MR程序 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 每个容器请求的最小内存资源(MB为单位) --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>128</value> </property> <!-- 每个容器请求的最大内存资源(MB为单位) --> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>2048</value> </property> <!-- 容器虚拟内存与物理内存之间的比率 --> <property> <name>yarn.nodemanager.vmem-pmen-ratio</name> <value>4</value> </property> <property> <name>mapreduce.application.classpath</name> <value>/export/server/hadoop-3.3.0/etc/hadoop:/export/server/hadoop-3.3.0/share/hadoop/common/lib/*:/export/server/hadoop-3.3.0/share/hadoop/common/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs:/export/server/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs/*:/export/server/hadoop-3.3.0/share/hadoop/mapreduce/*:/export/server/hadoop-3.3.0/share/hadoop/yarn:/export/server/hadoop-3.3.0/share/hadoop/yarn/lib/*:/export/server/hadoop-3.3.0/share/hadoop/yarn/* </value> </property> </configuration>
-
配置hadoop里的works
# 配置工人,因为3个节点都是工人,所以写入其在hosts中的缩写即可 hadoop100 hadoop101 hadoop102
8、将hadoop整体文件传送到另外两个节点
cd /export/server
chmod 777 /export/server/hadoop-3.3.0
scp -r hadoop-3.3.0 root@hadoop101:PWD$
scp -r hadoop-3.3.0 root@hadoop102:PWD$
9、启动hadoop集群,包括HDFS集群和YARN集群
start-all.sh
hadoop dfsadmin -safemode leave//关闭安全模式
10、查看每台上的进程是否正确
11、WebUI界面
HDFS网址:http://192.168.132.100:9870/
YARN网址:http://192.168.132.100:8088/