- 前期准备
- 购买服务器
- 新建安全组
- 开始部署
- 更改主机名称
- ssh配置文件检查
- hosts 配置文件设置
- 修改 cloud.cfg 配置文件
- 关闭防火墙
- 配置ssh互信
- 挂载数据盘
- 创建必要目录
- 下载软件包 (以下操作皆在node1服务器下操作)
- 分发组件
- 添加并校验环境变量
- 初始化服务
- 初始化word
- 启动Hadoop集群
- 验证Hadoop状态
- **至此部署Hadoop完成**
- 购买服务器
2vCPUS 4GB 鲲鹏计算 Centos7.6
- 新建安全组
放行 22、8088、50070、16010、 16030、19888
- 更改主机名称
1. 容易查看
hostname node1
bash
直接命名主机名 但重启会自动变回来
2. 彻底更改
vim /etc/hostname
cat /etc/hostname
> node1
reboot
3. 还有一种更加简便的办法,直接执行后就可以了,不需要重启
hostnamectl set-hostname node1
bash
- ssh配置文件检查
vim /etc/ssh/sshd_config 在非编辑模式下 :set number 显示行号 i o 修改UseDNS no 以提升ssh的连接速度。 MaxStartups 1000 配置为大于等于1000,1000表示允许sshd服务最大连接数 :wq! 保存配置强制退出 重启ssdh服务 systemctl restart sshd.service 四台机器都需要设置,并且在设置的时候记得删除对应行的井号“#”。
- hosts 配置文件设置
ifconfig eth0 # 使用命令 ifconfig eth0 查询 ECS 内网 IP vim /etc/hosts #需要删除自己的主机名映射到 127.0.0.1 的映射,如 node1 为: #127.0.0.1 node1 node1 # 添加自己四个内网的ip地址 例如: 192.168.0.101 node1 192.168.0.102 node2 192.168.0.103 node3 192.168.0.104 node4 # 根据自己内网ip来修改 ,一定要删除自己localhost的映射 # 确保各节点之间可以使用主机名作为通信的方式 四个节点都需要进行修改
- 修改 cloud.cfg 配置文件
使用公共镜像创建的ECS服务器,默认安装Cloud-init工具,能够对新创建弹性云服务器中指定的自定义信息(主机名、密钥和用户数据等)进行初始化配置
但它会在ECS重启动后修改一下系统配置文件,如/etc/hosts、/etc/hostname等。所以需要修改Cloud-init工具的配置文件/etc/cloud/cloud.cfg,注释对系统关键配置文件的影响项。
在 node1-4 进行以下操作(在非编辑模式下,按 49,然后再按一下 shift+g,可跳转到 49 行
vim /etc/cloud/cloud.cfg # 注释第 49、50、51 行内容: # - set_hostname # - update_hostname # - update_etc_host
- 关闭防火墙
systemctl status firewalld 查看防火墙状态 systemctl stop firewalld systemctl disable firewalld
- 配置ssh互信
# 生成id_rsa.pub ssh-keygen 各节点执行 ssh-keygen -t rsa 命令后,连续回车三次后生成/root/.ssh/id_rsa.pub 文件 # 汇总id_rsa.pub - node2上执行此命令 执行的时候可能输入“yes”,并且需要输入node1的服务器密码 scp ~/.ssh/id_rsa.pub root@node1:~/.ssh/id2 - node3上执行此命令 执行的时候可能输入“yes”,并且需要输入node1的服务器密码 scp ~/.ssh/id_rsa.pub root@node1:~/.ssh/id3 - node4上执行此命令 执行的时候可能输入“yes”,并且需要输入node1的服务器密码 scp ~/.ssh/id_rsa.pub root@node1:~/.ssh/id4 - 四合一到node1 在node1上执行此命令 ll ~/.sh 汇总到一个目录中 cd ~/.ssh cat id_rsa.pub id2 id3 id4 >> authorized_keys cat authorized_keys
# 选择 yes 后,确保能够互相免密码登录 ssh node1 ssh node2 ssh node3 ssh node4 exit #退出node4 到node3 exit #退出node3 到node2 exit #同理
- 挂载数据盘
# 步骤 1 查看新增的数据盘 fdisk -l # 步骤 2 分区并将分区结果写入到分区表 fdisk /dev/vdb # 输入n 新建分区 然后一直enter 看到 Command (m for help): 输入w 回车,将分区结果写入分区表中,其会自动退出命令行 #步骤 3 将新的分区表变更同步至操作系统 partprobe # 步骤 4 将新建分区挂载到/home目录 mkfs -t ext4 /dev/vdb1 mount /dev/vdb1 /home # 步骤 5 校验是否挂载成功 df -h #步骤 6 设置开机自动挂载 blkid
vim /etc/fstab UUID=18440b36-ddb0-40f4-b512-f23404c5bccf /home ext4 defaults 1 1 ## 四台服务器都需要操作可以通过ssh node_ 来切换 挂载磁盘 # 注意 若/home 下有重要文件需要先备份后挂载 因为挂载会清空/home文件夹
- 创建必要目录
## 四个节点都需要创建(必须创建) mkdir -p /home/modules/data/buf/ mkdir -p /home/test_tools/ mkdir -p /home/nm/localdir
- 下载软件包 (以下操作皆在node1服务器下操作)
-
步骤 1 下载Hadoop软件包
cd /home wget https://xunfang.obs.cn-south-1.myhuaweicloud.com/kunpeng_bigdata_pro_extend_tools.tar.gz ## 重命名 mv kunpeng_bigdata_pro_extend_tools.tar.gz extend_tools.tar.gz
-
步骤 2 解压软件包
tar -zxvf extend_tools.tar.gz
-
查看解压目录
# 在node1上准备hadoop组件 cd /home/extend_tools ll # 就要hadoop-2.8.3.tar.gz 到 /home/modules 目录下 tar -zxvf hadoop-2.8.3.tar.gz -C /home/modules ls /home/modules/ | grep hadoop
-
修改配置文
-
步骤 1 配置hadoop-env.sh
vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh #修改JAVA_HOME路径为ECS已经默认装好了JDK路径 export JAVA_HOME=/usr/lib/jvm/java
-
步骤 2 预配置core-site.xml
vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml
fs.obs.readahead.inputstream.enabled true fs.obs.buffer.max.range 6291456 fs.obs.buffer.part.size 2097152 fs.obs.threads.read.core 500 fs.obs.threads.read.max 1000 fs.obs.write.buffer.size 8192 fs.obs.read.buffer.size 8192 fs.obs.connection.maximum 1000 fs.defaultFS hdfs://node1:8020 hadoop.tmp.dir /home/modules/hadoop-2.8.3/tmp fs.obs.buffer.dir /home/modules/data/buf fs.obs.impl org.apache.hadoop.fs.obs.OBSFileSystem fs.obs.connection.ssl.enabled false fs.obs.fast.upload true fs.obs.socket.send.buffer 65536 fs.obs.socket.recv.buffer 65536 fs.obs.max.total.tasks 20 fs.obs.threads.max 20
-
-
配置OBS转存
-
步骤 1 登录华为公有云,选择OBS对象存储服务
-
步骤 2 在OBS控制台中选择要对接Hadoop的OBS桶
-
步骤 3 记录桶名称、Endpoint、区域等基本信息
-
步骤 4 记录AK和SK
-
步骤 5 重新修改core-site.xml配置文件
vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml
fs.obs.access.key Access Key ID fs.obs.secret.key Secret Access Key fs.obs.endpoint obs.cn-north-4.myhuaweicloud.com
-
-
配置hdfs-site.xml
vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml
dfs.replication 3 dfs.namenode.secondary.http-address node1:50090 dfs.namenode.secondary.https-address node1:50091 -
配置yarn-site.xml
vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml
yarn.resourcemanager.hostname node1 表示ResourceManager安装的主机 yarn.resourcemanager.address node1:8032 表示ResourceManager监听的端口 yarn.nodemanager.aux-services mapreduce_shuffle 为map reduce应用打开shuffle 服务 yarn.nodemanager.local-dirs /home/nm/localdir 表示nodeManager中间数据存放的地方 yarn.nodemanager.resource.memory-mb 3072 表示这个NodeManager管理的内存大小 yarn.nodemanager.resource.cpu-vcores 2 表示这个NodeManager管理的cpu个数 yarn.nodemanager.pmem-check-enabled false 不检查每个任务的物理内存量 yarn.nodemanager.vmem-check-enabled false 不检查每个任务的虚拟内存量 yarn.nodemanager.aux-services mapreduce_shuffle 为map reduce应用打开shuffle 服务 -
配置mapred-site.xml
##注意cp空格 cp /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml.template /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobhistory.address node1:10020 mapreduce.jobhistory.webapp.address node1:19888 mapred.task.timeout 1800000 -
配置slaves (四个节点都需要配置)
# 在node1节点配置从节点,删掉里面的localhost,配置上从节点(node2、node3、node4) vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves # 删掉里面的localhost,添加以下内容 node2 node3 node4
-
拷贝插件jar包到指定目录(在node1下执行该指令配置一个环境后面皆cp)
> cp /home/extend_tools/hadoop-huaweicloud-2.8.3.33.jar /home/modules/hadoop-2.8.3/share/hadoop/common/lib/ > cp /home/extend_tools/hadoop-huaweicloud-2.8.3.33.jar /home/modules/hadoop-2.8.3/share/hadoop/tools/lib > cp /home/extend_tools/hadoop-huaweicloud-2.8.3.33.jar /home/modules/hadoop-2.8.3/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/ > cp /home/extend_tools/hadoop-huaweicloud-2.8.3.33.jar /home/modules/hadoop-2.8.3/share/hadoop/hdfs/lib/
- 分发组件
#在 node1 执行如下命令,将 hadoop-2.8.3 目录拷贝到其他各个节点的/home/modules/下 for i in {2..4};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done 在 node2~node4 节点执行如下命令检查是否复制成功 校验 ls /home/modules/ | grep hadoop
- 添加并校验环境变量
#在 node1~node4,执行下面命令添加环境变量 # 添加内容为: export HADOOP_HOME=/home/modules/hadoop-2.8.3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH export JAVA_HOME=/usr/lib/jvm/java export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #在 node1~node4,执行如下命令,使环境变量生效 source /etc/profile #在 node1~node4,执行如下命令,校验环境变量: echo $HADOOP_HOME
```shell 在 node1上执行如下命令,初始化 word hdfs word -format ```
- 启动Hadoop集群
- 步骤 1 在node1节点执行以下命令
start-dfs.sh ; start-yarn.sh
Starting word word on [node1]
Starting secondary word [node1]
starting yarn daemons
# 关闭Hadoop集群的命令为
stop-dfs.sh && stop-yarn.sh
- 验证Hadoop状态
- 步骤 1 使用jps命令在node1-4中查看Java进程
#在node1中可以查看到 NameNode,SecondaryNameNode,ResourceManager进程, #在node2-4中可以查看到 NodeManager 和 Datanode 进程,表示hadoop集群状态正常。 jps
- 步骤 2 访问http://node1弹性公网IP:50070,可以登录Namenode的Web界面:
成功来源于一点一滴的坚持!!!



