笔记内容选自慕课网《大数据开发工程师》体系课
2.1 什么是Hadoop
- Hadoop的作者是Doug Cutting,Hadoop这个名字是作者的孩子给他的毛绒象玩具起的名字
- 我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题
- Hadoop适合海量数据,且包含三大组件HDFS(分布式存储)和MapReduce(分布式计算)和YARN(分布式资源管理)
2.2 虚拟机基本环境搭建
# 1、准备一台VMware的CentOS7虚拟机,修改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 第一台节点为:192.168.53.100
BOOTPROTO="static"
IPADDR=192.168.53.100
GATEWAY=192.168.53.2
DNS1=192.168.53.2
# 重启网卡
service network restart
# 设置第一台主机名称为:bigdata01
vi /etc/hostname
bigdata01
# 关闭防火墙
systemctl stop firewalld
# 剔除防火墙开机自启
systemctl disable firewalld
# 设置公钥,免密登录,一直按enter
ssh-keygen -t rsa
# 查看公钥,私钥文件
ll ~/.ssh/
# 把文件重定向到自动授权里
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 登录无需输密码
ssh bigdata01
exit
# 2、创建文件夹安装jdk
mkdir -p /data/soft
# 通过sftp把 jdk-8u202-linux-x64.tar.gz 上传到soft文件夹里
cd /data/soft
# 解压jdk
tar -zxvf jdk-8u202-linux-x64.tar.gz
# 重命名jdk
mv jdk1.8.0_202/ jdk1.8
# 配置环境变量
vi /etc/profile
...
export JAVA_HOME=/data/soft/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
# 重新加载
source /etc/profile
# 检查版本
java -version
2.3 单体Hadoop环境搭建
# 安装Hadoop,通过sftp把 hadoop-3.2.0.tar.gz 上传到soft文件夹里进行解压
tar -zxvf hadoop-3.2.0.tar.gz
# 修改环境变量
vi /etc/profile
...
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_HOME=/data/soft/hadoop-3.2.0
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
# 重新加载
source /etc/profile
# 检查是否配置成功
hdfs
yarn
# 进入Hadoop
cd hadoop-3.2.0
# 查看Hadoop文件内部结构
drwxr-xr-x. 2 1001 1002 203 Jan 8 2019 bin
drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 etc
drwxr-xr-x. 2 1001 1002 106 Jan 8 2019 include
drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 lib
drwxr-xr-x. 4 1001 1002 4096 Jan 8 2019 libexec
-rw-rw-r--. 1 1001 1002 150569 Oct 19 2018 LICENSE.txt
-rw-rw-r--. 1 1001 1002 22125 Oct 19 2018 NOTICE.txt
-rw-rw-r--. 1 1001 1002 1361 Oct 19 2018 README.txt
drwxr-xr-x. 3 1001 1002 4096 Jan 8 2019 sbin
drwxr-xr-x. 4 1001 1002 31 Jan 8 2019 share
#!hadoop目录下面有两个重要的目录,一个是bin目录,一个是sbin目录
bin目录,这里面有hdfs,yarn等脚本,这些脚本后期主要是为了操作hadoop集群中的hdfs和yarn组件的
sbin目录,这里面有很多start、stop开头的脚本,这些脚本是负责启动 或者停止集群中的组件的。
etc/hadoop目录,这里面都是些 xml 文件,用于Hadoop配置信息
# 修改Hadoop配置文件,主要修改下面这几个文件
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
# 进入目录
cd /etc/hadoop
#! 修改第一个
vi hadoop-env.sh
...
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
#! 修改第二个
vi core-site.xml
...
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop_repo</value>
</property>
</configuration>
#! 修改第三个
vi hdfs-site.xml
...
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
#! 修改第四个
vi mapred-site.xml
...
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
#! 修改第五个
vi 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_MAPRED_HOME</value>
</property>
</configuration>
#! 修改第六个
vi workers
...
bigdata01
# 配置完成,还不能启动,需要HDFS格式化,就像买了一块新硬盘需要格式化才能装程序
cd /data/soft/hadoop-3.2.0
bin/hdfs namenode -format
#! 一般只格式化一次,如果想重新格式化,需要移除 rm -rf /data/hadoop_repo/
# 修改sbin目录
cd sbin
# 主要修改一下几个脚本
start-dfs.sh
stop-dfs.sh
start-yarn.sh
stop-yarn.sh
#! 修改第一个
vi start-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
#! 修改第二个
vi stop-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
#! 修改第三个
vi start-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
#! 修改第四个
vi stop-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
# 启动Hadoop集群
/data/soft/hadoop-3.2.0/sbin/start-all.sh
# jps:查看Hadoop启动进程
11224 Jps
10332 DataNode
10173 NameNode
11086 NodeManager
10767 ResourceManager
10531 SecondaryNameNode
#! 如果启动失败,可以到 /data/hadoop_repo/logs/hadoop 里查看启动日志
# 界面测试
HDFS webui界面:192.168.53.100:9870
YARN webui界面:192.168.53.100:8088
# 修改电脑的host
192.168.53.100 bigdata01
# 进入测试
bigdata01:8088
# 停止Hadoop集群
/data/soft/hadoop-3.2.0/sbin/stop-all.sh
2.4 集群Hadoop基本环境搭建
# 重复虚拟机环境搭建出3台,这三台机器的ip、hostname、firewalld、ssh免密码登录、JDK这些基础环境已经配置ok,分别为
「主节点」bigdata01 192.168.53.100
「子节点」bigdata02 192.168.53.101
「子节点」bigdata03 192.168.53.102
# 修改本地电脑的host文件,Mac和Win的路径不同
192.168.53.100 bigdata01
192.168.53.101 bigdata02
192.168.53.102 bigdata03
# 修改三台虚拟机hosts,从而可以互相ping通
vi /etc/hosts
192.168.53.100 bigdata01
192.168.53.101 bigdata02
192.168.53.102 bigdata03
# 添加时间服务器到三台虚拟机,从而实现集群之间的时间同步问题
yum install -y ntpdate
vi /etc/crontab
...
* * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
# 切到bigdata01服务器,把主节点的公钥拷贝到两个子节点
scp ~/.ssh/authorized_keys bigdata02:~/
scp ~/.ssh/authorized_keys bigdata03:~/
# 切到bigdata02服务器,追加免登陆信息
cat ~/authorized_keys >> ~/.ssh/authorized_keys
# 切到bigdata03服务器,追加免登陆信息
cat ~/authorized_keys >> ~/.ssh/authorized_keys
# 切到bigdata01服务器,测试连接到02,03服务器
ssh bigdata02
ssh bigdata03
2.4.1开始安装Hadoop
# 切到bigdata01服务器,安装Hadoop,通过sftp把 hadoop-3.2.0.tar.gz 上传到soft文件夹里进行解压
cd /data/soft
tar -zxvf hadoop-3.2.0.tar.gz
# 修改环境变量
vi /etc/profile
...
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_HOME=/data/soft/hadoop-3.2.0
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
# 重新加载
source /etc/profile
# 检查是否配置成功
hdfs
yarn
# 进入Hadoop
cd hadoop-3.2.0
# 查看Hadoop文件内部结构
drwxr-xr-x. 2 1001 1002 203 Jan 8 2019 bin
drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 etc
drwxr-xr-x. 2 1001 1002 106 Jan 8 2019 include
drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 lib
drwxr-xr-x. 4 1001 1002 4096 Jan 8 2019 libexec
-rw-rw-r--. 1 1001 1002 150569 Oct 19 2018 LICENSE.txt
-rw-rw-r--. 1 1001 1002 22125 Oct 19 2018 NOTICE.txt
-rw-rw-r--. 1 1001 1002 1361 Oct 19 2018 README.txt
drwxr-xr-x. 3 1001 1002 4096 Jan 8 2019 sbin
drwxr-xr-x. 4 1001 1002 31 Jan 8 2019 share
#!hadoop目录下面有两个重要的目录,一个是bin目录,一个是sbin目录
bin目录,这里面有hdfs,yarn等脚本,这些脚本后期主要是为了操作hadoop集群中的hdfs和yarn组件的
sbin目录,这里面有很多start、stop开头的脚本,这些脚本是负责启动 或者停止集群中的组件的。
etc/hadoop目录,这里面都是些 xml 文件,用于Hadoop配置信息
# 修改Hadoop配置文件,主要修改下面这几个文件
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
# 进入目录
cd etc/hadoop
2.4.2 vi hadoop-env.sh
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
2.4.3 vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop_repo</value>
</property>
</configuration>
2.4.4 vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata01:50090</value>
</property>
</configuration>
2.4.5 vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.4.6 vi 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_MAPRED_HOME</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata01</value>
</property>
</configuration>
2.4.7 vi workers
bigdata02
bigdata03
2.4.8 修改启动脚本
cd /data/soft/hadoop-3.2.0/sbin
# 修改hdfs启动脚本
vi start-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
# 修改hdfs关闭脚本
vi stop-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
# 修改yarn启动脚本
vi start-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
# 修改yarn关闭脚本
vi stop-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.4.9 拷贝配置好的Hadoop到子节点
# 把bigdata01节点上将修改好配置的安装包拷贝到其他两个从节点
cd /data/soft/
scp -rq hadoop-3.2.0 bigdata02:/data/soft/
scp -rq hadoop-3.2.0 bigdata03:/data/soft/
# 在bigdata01节点上格式化HDFS
cd /data/soft/hadoop-3.2.0
bin/hdfs namenode -format
# 在bigdata01节点启动集群
sbin/start-all.sh
# 在bigdata01节点验证进程
jps
6128 NameNode
6621 ResourceManager
6382 SecondaryNameNode
# 在bigdata02节点验证进程
jps
2276 DataNode
2385 NodeManager
# 在bigdata03节点验证进程
jps
2217 DataNode
2326 NodeManager
# 在bigdata01节点停止集群
sbin/stop-all.sh
2.5 Hadoop的客户端节点
- 在实际工作中不建议直接连接集群中的节点来操作集群,直接把集群中的节点暴露给普通开发人员是不安全的
- 建议在业务机器上安装Hadoop,这样就可以在业务机器上操作Hadoop集群了,此机器就称为是Hadoop的客户端节点
- 类似于Navicat客户端操作MySQL服务,不会对MySQL服务整体运行有什么影响。