简介
Hadoop框架包括以下四个模块:
- Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
- Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。
- Hadoop Distributed File System (HDFS): 分布式文件系统,提供对应用程序数据的高吞吐量访问。
- Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。
- HDFS为海量的数据提供了存储。
- MapReduce为海量的数据提供了计算。
Hadoop部署
官网:https://hadoop.apache.org 安装包:hadoop-3.2.1.tar.gz JDK:jdk-8u181-linux-x64.tar.gz
单机模式
创建hadoop用户,设置密码
useradd hadoop
echo westos | passwd --stdin hadoop
使用hadoop用户将安装包以及JDK在hadoop家目录解压,并创建软链接
[root@server2 ~]# su - hadoop
[hadoop@server2 ~]$ ls
hadoop-3.2.1.tar.gz jdk-8u181-linux-x64.tar.gz
[hadoop@server2 ~]$ tar zxf hadoop-3.2.1.tar.gz
[hadoop@server2 ~]$ tar zxf jdk-8u181-linux-x64.tar.gz
[hadoop@server2 ~]$ ln -s jdk1.8.0_181/ java
[hadoop@server2 ~]$ ln -s hadoop-3.2.1/ hadoop
编辑hadoop运行环境脚本,添加JAVA运行环境
cd hadoop/etc/hadoop
vim hadoop-env.sh
export JAVA_HOME=/home/hadoop/java
export HADOOP_HOME=/home/hadoop/hadoop
创建输入目录,测试hadoop
[hadoop@server2 hadoop]$ mkdir input
[hadoop@server2 hadoop]$ cp etc/hadoop/*.xml input
[hadoop@server2 hadoop]$ bin/hadoop
测试,过滤模块过滤’dfs[a-z.]+’
[hadoop@server2 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
检查输出
[hadoop@server2 hadoop]$ cat output/*
1 dfsadmin
伪集群模式
文件系统web界面 http://172.25.52.2:9870/
修改hadoop核心配置文件
cd ~/hadoop
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
设置副本为1
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
[hadoop@server2 ~]$ ssh-keygen
[hadoop@server2 ~]$ ssh-copy-id localhost
格式化hdfs,重新开启hdfs文件系统
[hadoop@server2 hadoop]$ bin/hdfs namenode -format
[hadoop@server2 hadoop]$ sbin/start-dfs.sh
创建用户目录,上传文件至文件系统
[hadoop@server2 hadoop]$ bin/hdfs dfs -mkdir /user
[hadoop@server2 hadoop]$ bin/hdfs dfs -mkdir /user/hadoop
[hadoop@server2 hadoop]$ bin/hdfs dfs -mkdir input
[hadoop@server2 hadoop]$ bin/hdfs dfs -put etc/hadoop/*.xml input
测试hadoop,单词计数
[hadoop@server2 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount input output
查看输出:
下载到本地查看。关闭文件系统
[hadoop@server2 hadoop]$ bin/hdfs dfs -get output output
[hadoop@server2 hadoop]$ cat output/*
[hadoop@server2 hadoop]$ sbin/stop-dfs.sh
集群模式
详情见官方手册: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html 准备其余两个节点。创建用户hadoop,UID GID 为1000(需要与master的hadoop用户一致)。 在master上开启nfs,共享hadoop家目录。
[hadoop@server2 hadoop]$yum install -y nfs-*
[hadoop@server2 hadoop]$vim /etc/exports
/home/hadoop *(rw,anonuid=1000,anongid=1000)
[hadoop@server2 hadoop]$exportfs -rv
[hadoop@server2 hadoop]$showmount -e
在其余两个节点挂载hadoop家目录到本机hadoop家目录,(需要有server2也就是master节点的解析)
[hadoop@server2 hadoop]$ yum install -y nfs-*
[hadoop@server2 hadoop]$ mount server2:/home/hadoop /home/hadoop
[hadoop@server2 hadoop]$ showmount -e server2
在server2上配置到server3 4 的ssh免密。 由于家目录下所有数据都是相同的,因此公钥私钥也相同,只需要进行确认即可。 修改server2 即master端配置文件 , workers中可以配置ip或主机名
[hadoop@server2 hadoop]$ vim etc/hadoop/workers
server3
server4
[hadoop@server2 hadoop]$ vim etc/hadoop/core-site.xml
修改hadoop核心配置文件 , 指定master IP
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.25.52.2:9000</value>
</property>
</configuration>
设置副本为2
[hadoop@server2 hadoop]$ vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
格式化存储,重新开启dfs,在web端可以看到节点状态
[hadoop@server2 hadoop]$ bin/hdfs namenode -format
[hadoop@server2 hadoop]$ sbin/start-dfs.sh
YARN
编辑配置文件
[hadoop@server2 hadoop]$ vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
[hadoop@server2 hadoop]$ vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
修改hadoop环境变量,在etc/hadoop/hadoop-env.sh 中增加内容
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop
开启yarn,访问master的8088端口
hadoop@server2 hadoop]$ sbin/start-yarn.sh
|