搭建 Hadoop 集群详细教程

1. 准备工作

1.1 环境

  • Centos 7
  • JDK 1.8
  • Hadoop 2.10.0

1.2 集群部署规划

hadoop1hadoop2hadoop3
HDFSNameNode, DataNodeDataNodeSecondaryNameNode, DataNode
YarnNodeManagerResourceManager, NodeManagerNodeManager

2. 配置主节点

2.1 创建虚拟机

  1. 选择新建虚拟机
  2. 选择典型类型
  3. 选择稍后安装操作系统
  4. 选择 Linux,Centos 7 64位
  5. 命名虚拟机 hadoop1
  6. 使用默认 20G 磁盘大小
  7. 不修改虚拟机硬件配置,完成创建虚拟机
  8. 选择创建好的虚拟机,点击编辑虚拟机
  9. 移除 USB 控制器、声卡、打印机
  10. 选择 CD/DVD,使用 ISO 映像文件,选择 ISO 文件位置
  11. 开启并安装虚拟机
    • 时区选 Asia Shanghai
    • 需创建 root 用户

2.2 配置

  1. 「编辑」->「虚拟网络编辑器」->「VMnet8」->「设置 NAT」,如下图

  1. 虚拟机网络配置选择 NAT 模式

  2. 配置静态 ip

切换到 root 用户

su root

编辑配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens32

也有可能是 eth0、ens33 等,跟 Centos 版本有关

配置文件内容如下,其中需要修改 BOOTPROTO 字段值为 staticONBOOT 字段值为 yes,表示开机启动网络;IPADDR 字段为 ip 地址,需与 NAT 子网 ip 在同一网段;GATEWAY 字段为网关,需与 NAT 网关相同

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=4d0b744b-8ebf-4c75-b35c-324d9f671ce6
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.144.101
GATEWAY=192.168.144.2
DNS1=8.8.8.8
DNS2=8.8.4.4

重启网络

systemctl restart network

查看 ip

ip addr
  1. 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld
  1. 修改 hostname
echo hadoop1 > /etc/hostname

编辑文件

vi /etc/sysconfig/network

写入以下内容

NETWORKING=yes # 使用网络
HOSTNAME=hadoop1 # 设置主机名
  1. 配置 Host
vi /etc/hosts

追加以下内容

192.168.144.101 hadoop1
192.168.144.102 hadoop2
192.168.144.103 hadoop3
  1. 重启
reboot
  1. 切换回普通用户
su shenke

创建安装目录

sudo mkdir /opt/module

修改安装目录所有者

sudo chown shenke:shenke /opt/module

2.3 安装 JDK

  1. 将在 /tmp 目录下的 jdk-8u261-linux-x64.tar.gz 解压
tar -zxvf jdk-8u261-linux-x64.tar.gz
  1. 移动到 /opt/module 目录下,并重命名为 jdk
mv jdk1.8.0_261 /opt/module/jdk
  1. 配置环境变量
sudo vi /etc/profile

追加以下内容

# JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin

使环境变量生效

source /etc/profile
  1. 验证是否安装成功
java -version

2.4 安装 Hadoop

  1. 将在 /tmp 目录下的 hadoop-2.10.0.tar.gz 解压
tar -zxvf hadoop-2.10.0.tar.gz
  1. 移动到 /opt/module 目录下,并重命名为 hadoop
mv hadoop-2.10.0 /opt/module/hadoop
  1. 配置环境变量
sudo vi /etc/profile

追加以下内容

# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

使环境变量生效

source /etc/profile
  1. 验证是否安装成功
hadoop

2.5 安装其他包

sudo yum install -y net-tools rsync

3. 配置从节点

3.1 克隆虚拟机

先将 hadoop1 关机,「右键」->「管理」->「克隆」

  1. 选择创建完整克隆

  2. 修改虚拟机名称为 hadoop2

3.2 配置网络

如 2.2 中第 3 步,修改 /etc/sysconfig/network-scripts/ifcfg-ens32 文件中的 IPADDR192.168.144.102,并删除 UUID

如 2.2 中第 5 步,修改 hostname 为 hadoop2

重复以上步骤,克隆一个 hadoop3 节点

3.3 测试

尝试能否 ping 通其他节点

ping hadoop2

4. 配置集群

4.1 设置 SSH 无密码登录

  1. 生成公钥
ssh-keygen -t rsa
  1. 分发公钥
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3

在三个节点上重复以上命令

4.2 编写集群分发脚本 xsync

  1. 在 hadoop1 的 /home/user/bin 目录下创建 xsync 文件
mkdir bin && touch bin/xsync

如果是 root 用户则可将脚本放在 /usr/local/bin 目录下

编辑脚本

vi bin/xsync

内容参考 xsync.sh,主要是通过以下命令实现文件同步,其中,-r 表示递归处理子目录,-v 表示以详细模式输出,-l 表示保留软链接,--delete 表示同步删除,--ignore-errors 表示即使出现 IO 错误也进行删除

rsync -rvl --delete --ignore-errors $directory/$file $user@$host:$directory
  1. 赋予执行权限
chmod 777 bin/xsync
  1. 使用
xsync $file

# 例如
xsync /home/shenke/bin

5. 配置集群

配置文件均在 hadoop 安装目录下的 etc/hadoop 目录下

5.1 核心配置文件

  1. 编辑 core-site.xml
vi core-site.xml

configuration 标签中写入以下内容

<configuration>

  <!-- 指定 HDFS 中 NameNode 的地址 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>
  </property>

  <!-- 指定 Hadoop 运行时产生文件的存储目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop/data/tmp</value>
  </property>

</configuration>
  1. 创建存储目录
mkdir -p /opt/module/hadoop/data/tmp

5.2 HDFS 配置文件

  1. 配置 hadoop-env.sh
vi hadoop-env.sh

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk
  1. 配置 hdfs-site.xml
vi hdfs-site.xml

configuration 标签中写入以下内容

<configuration>

  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

  <!-- 指定 Hadoop 辅助名称节点主机配置 -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop3:50090</value>
  </property>

</configuration>

5.3 Yarn 配置文件

  1. 配置 yarn-env.sh
vi yarn-env.sh

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk
  1. 配置 yarn-site.xml
vi yarn-site.xml

configuration 标签中写入以下内容

<configuration>

  <!-- Reducer 获取数据的方式 -->
  <property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
  </property>

  <!-- 指定 YARN 的 ResourceManager 的地址 -->
  <property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop2</value>
  </property>

</configuration>

5.4 MapReduce 配置文件

  1. 配置 mapred-env.sh
vi mapred-env.sh

在文件末尾追加以下内容

export JAVA_HOME=/opt/module/jdk
  1. 配置 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml && vi mapred-site.xml

configuration 标签中写入以下内容

<configuration>

  <!-- 指定 MapReduce 运行在 Yarn 上 -->
  <property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
  </property>

</configuration>

5.5 配置 slaves

编辑 slaves

vi slaves

写入以下内容

hadoop1
hadoop2
hadoop3

5.6 同步配置文件

xsync /opt/module/hadoop

6. 启动集群

在 hadoop 安装目录下

  1. 格式化
bin/hdfs namenode -format

如果需要重新格式化 NameNode,需要先将 data/tmplogs下的文件全部删除

  1. 启动 HDFS
sbin/start-dfs.sh
  1. 启动 Yarn
sbin/start-yarn.sh

注意:需在 ResouceManager 所在节点启动 Yarn,本例中在 hadoop2 中启动

  1. 查看进程
jps
  1. 查看 web 端
  1. 停止 HDFS
sbin/stop-dfs.sh
  1. 停止 Yarn
sbin/stop-yarn.sh

7. 编写群起脚本

  1. 启动和关闭脚本

同样是在 /home/shenke/bin 目录下,新建并编辑脚本

vi ~/bin/hdp

内容参考 hadoop.sh

  1. 查看进程脚本

新建并编辑脚本

vi ~/bin/xcall

内容参考 xcall.sh

8. HDFS 测试

  1. 上传文件

上传一个小文件到根目录

bin/hdfs dfs -put /home/shenke/bin/xsync /

上传一个大文件到根目录

bin/hdfs dfs -put /tmp/hadoop-2.10.0.tar.gz /

  1. 查看文件存储路径

  • 27
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值