hadoop服务搭建
1、环境准备
1.1、四台机器关闭selinux --重要
vim /etc/selinux/config
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2BSAdie-1606737188979)(http://192.168.8.10:4999/server/…/Public/Uploads/2019-12-03/5de62d7d5df87.png)]
1.2、四台机器更改主机名
vim /etc/hostname
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNnbUjBF-1606737188982)(http://192.168.8.10:4999/server/…/Public/Uploads/2019-12-03/5de62df66c0ba.png)]
1.3、四台机器做主机名与IP地址的映射
vim /etc/hosts
- 输入以下内容:
10.0.1.94 hadoop01.00joy.com
10.0.1.79 hadoop02.00joy.com
10.0.1.66 hadoop03.00joy.com
10.0.1.87 hadoop04.00joy.com
1.4、四台机器创建hadoop用户
- 添加hadoop用户,密码:hadoop
useradd hadoop
passwd hadoop
- 设置hadoop用户权限
visudo
-添加权限:
hadoop ALL=(ALL) ALL
1.5、配置免密
- 选择一台机器生成公钥和私钥,连续四次回车
ssh-keygen -t rsa
- 将公钥拷贝到authorized_keys文件中:
su - hadoop
cd .ssh
cp id_rsa.pub authorized_keys
- 将authorized_keys和id_rsa发送到其他节点机器对应目录下:
scp id_rsa authorized_keys hadoop@hadoop02.00joy.com:/$PWD
scp id_rsa authorized_keys hadoop@hadoop03.00joy.com:/$PWD
scp id_rsa authorized_keys hadoop@hadoop04.00joy.com:/$PWD
1.6、硬盘挂载
- 将数据和系统分开,方便后续增加机器硬盘空间
fdisk /dev/vdb n p 默认 默认 ##分区
mkfs.ext4 /dev/vdb1 ##磁盘格式化、
vi /etc/fstab
/dev/vdb1 /data ext4 defaults 0 0
mount -a ####磁盘挂载
1.7、jdk的安装
- 上传压缩包到/data目录下
sudo tar -zxvf jdk-8u112-linux-x64.gz
- 配置环境变量
sudo vi .bashrc
输入:
export JAVA_HOME=/data/jdk1.8.0_112
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
{JAVA_HOME}/bin:
JAVAHOME/bin:PATH
二、hadoop搭建
- 服务器节点服务规划
服务器ip | 10.0.1.94(hadoop01.00joy.com) | 10.0.1.79(hadoop02.00joy.com) | 10.0.1.66(hadoop03.00joy.com) | 10.0.1.87(hadoop04.00joy.com) |
---|---|---|---|---|
HDFS | NameNode(主节点)、DataNode | SecondaryNameNode、DataNode | DataNode | DataNode |
YARN | ResourceManager、NodeManager | NodeManager | NodeManager | NodeManager |
MapReduce | jobhistoryserver |
以下操作在hadoop用户下操作
1.上传压缩包并解压
- 上传cdh版本hadoop软件包到/data目录下并解压(使用CDH5.14.0版本的hadoop)
tar -zxvf hadoop-2.6.0-cdh5.14.0.tar.gz
- 解压后的目录结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UkzWGWr7-1606737188984)(http://192.168.8.10:4999/server/…/Public/Uploads/2019-12-03/5de6463c1eb1e.png)]
2.修改配置文件
先在第一台修改配置文件,完成后再分发到其他节点
2.1、 修改core-site.xml文件
- 命令
cd /data/hadoop/etc/hadoop/
sudo vim core-site.xml
- 添加以下配置
<configuration>
<!--定义HadoopMaster的URI和端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01.00joy.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/hadoopdata/tempDatas</value>
</property>
<!--用作序列化文件处理时读写buffer的大小-->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--HDFS垃圾箱设置,可以恢复误删除,分钟数,0为禁用,添加该项无需重启hadoop-->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
</configuration>
2.2、 修改hdfs-site.xml
- 命令
sudo vim hdfs-site.xml
- 添加以下配置
<configuration>
<!-- 指定secondarynamenode的节点-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02.00joy.com:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01.00joy.com:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hadoopdata/namenodeDatas</value>
</property>
<!-- 定义dataNode数据存储的节点位置,先确定磁盘的挂载目录,然后多个目录用","进行分割 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hadoopdata/datanodeDatas</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///data/hadoop/hadoopdata/dfs/nn/edits</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///data/hadoop/hadoopdata/dfs/snn/name</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hadoopdata/dfs/nn/snn/edits</value>
</property>
<!--hdfs文件的副本个数,默认是3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--如果是true则检查权限,否则不检查(每一个人都可以存取文件)-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--hadoop2.X默认的block块大小是128M,用户可以根据处理文件的大小进行修改-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
</configuration>
2.3、 修改mapred-site.xml
- 命令
sudo vim mapred-site.xml
- 添加以下配置
<configuration>
<!--使用yarn运行作为mapreduce程序运行的资源调度-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01.00joy.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01.00joy.com:19888</value>
</property>
</configuration>
2.4、 修改yarn-site.xml
- 命令
sudo vim yarn-site.xml
- 添加以下配置
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01.00joy.com</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
2.5、 修改slaves 文件
- 命令
sudo vim slaves
- 添加以下配置
hadoop01.00joy.com
hadoop02.00joy.com
hadoop03.00joy.com
hadoop04.00joy.com
3.创建文件配置目录
- 在第一台机器上创建以下目录
mkdir -p /data/hadoop/hadoopdata/tempDatas
mkdir -p /data/hadoop/hadoopdata/namenodeDatas
mkdir -p /data/hadoop/hadoopdata/datanodeDatas
mkdir -p /data/hadoop/hadoopdata/dfs/nn/edits
mkdir -p /data/hadoop/hadoopdata/dfs/snn/name
mkdir -p /data/hadoop/hadoopdata/dfs/nn/snn/edits
4.安装包的分发
- 从第一台分发到其他节点
cd /data/
scp -r hadoop/ hadoop@hadoop01.00joy.com:$PWD
scp -r hadoop/ hadoop@hadoop02.00joy.com:$PWD
scp -r hadoop/ hadoop@hadoop03.00joy.com:$PWD
5.配置环境变量
- 四台机器都要配置环境变量
sudo vim .bashrc
export HADOOP_HOME=/data/hadoop
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source .bashrc
6.格式化环境
-
要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群。
注意:首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的 HDFS 在物理上还是不存在的。 -
两种方式(作用相同)
cd /data/hadoop
bin/hdfs namenode -format 或者 bin/hadoop namenode -format
7.集群的启动与访问
7.1单一节点逐个启动
- 在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode
- 在每个从节点上使用以下命令启动 HDFS DataNode:
hadoop-daemon.sh start datanode
- 在主节点上使用以下命令启动 YARN ResourceManager:
yarn-daemon.sh start resourcemanager
- 在每个从节点上使用以下命令启动 YARN nodemanager:
yarn-daemon.sh start nodemanager
以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start 改为stop 即可
7.2 脚本一键启动
-
如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动所有Hadoop 两个集群的相关进程,在主节点所设定的机器上执行。
-
主节点上执行以下命令
cd /data/hadoop
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
7.3 集群的访问
- 集群访问
hdfs集群访问地址
http://hadoop01.00joy.com:50070/dfshealth.html#tab-overview
yarn集群访问地址
http://hadoop01.00joy.com:8088/cluster
jobhistory访问地址:
http://hadoop01.00joy.com:19888/jobhistory