前期准备
-
购买服务器 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
vim /etc/hosts
192.168.0.101 node1
192.168.0.102 node2
192.168.0.103 node3
192.168.0.104 node4
-
修改 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
-
关闭防火墙
systemctl status firewalld
查看防火墙状态
systemctl stop firewalld
systemctl disable firewalld
-
配置ssh互信
ssh-keygen
各节点执行 ssh-keygen -t rsa 命令后,连续回车三次后生成/root/.ssh/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
ssh node1
ssh node2
ssh node3
ssh node4
exit
exit
exit
-
挂载数据盘
fdisk -l
fdisk /dev/vdb
partprobe
mkfs -t ext4 /dev/vdb1
mount /dev/vdb1 /home
df -h
blkid
vim /etc/fstab
UUID=18440b36-ddb0-40f4-b512-f23404c5bccf /home ext4 defaults 1 1
mkdir -p /home/modules/data/buf/
mkdir -p /home/test_tools/
mkdir -p /home/nm/localdir
-
下载软件包 (以下操作皆在node1服务器下操作)
-
查看解压目录
cd /home/extend_tools
ll
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
export JAVA_HOME=/usr/lib/jvm/java
-
步骤 2 预配置core-site.xml vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.obs.readahead.inputstream.enabled</name>
<value>true</value>
</property>
<property>
<name>fs.obs.buffer.max.range</name>
<value>6291456</value>
</property>
<property>
<name>fs.obs.buffer.part.size</name>
<value>2097152</value>
</property>
<property>
<name>fs.obs.threads.read.core</name>
<value>500</value>
</property>
<property>
<name>fs.obs.threads.read.max</name>
<value>1000</value>
</property>
<property>
<name>fs.obs.write.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.read.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.connection.maximum</name>
<value>1000</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/modules/hadoop-2.8.3/tmp</value>
</property>
<property>
<name>fs.obs.buffer.dir</name>
<value>/home/modules/data/buf</value>
</property>
<property>
<name>fs.obs.impl</name>
<value>org.apache.hadoop.fs.obs.OBSFileSystem</value>
</property>
<property>
<name>fs.obs.connection.ssl.enabled</name>
<value>false</value>
</property>
<property>
<name>fs.obs.fast.upload</name>
<value>true</value>
</property>
<property>
<name>fs.obs.socket.send.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.socket.recv.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.max.total.tasks</name>
<value>20</value>
</property>
<property>
<name>fs.obs.threads.max</name>
<value>20</value>
</property>
</configuration>
-
配置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
<configuration></configuration>
<property>
<name>fs.obs.access.key</name>
<value>Access Key ID</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>Secret Access Key</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs.cn-north-4.myhuaweicloud.com</value>
</property>
</configuration>
-
配置hdfs-site.xml vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node1:50091</value>
</property>
</configuration>
-
配置yarn-site.xml vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
<description>表示ResourceManager安装的主机</description>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:8032</value>
<description>表示ResourceManager监听的端口</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>为map reduce应用打开shuffle 服务</description>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/nm/localdir</value>
<description>表示nodeManager中间数据存放的地方</description>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
<description>表示这个NodeManager管理的内存大小</description>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
<description>表示这个NodeManager管理的cpu个数</description>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
<description>不检查每个任务的物理内存量</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>不检查每个任务的虚拟内存量</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>为map reduce应用打开shuffle 服务</description>
</property>
</configuration>
-
配置mapred-site.xml
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
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
<property>
<name>mapred.task.timeout</name>
<value>1800000</value>
</property>
</configuration>
-
配置slaves (四个节点都需要配置)
vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves
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/
-
分发组件
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
-
添加并校验环境变量
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
source /etc/profile
echo $HADOOP_HOME
初始化服务
初始化word
```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
stop-dfs.sh && stop-yarn.sh
-
验证Hadoop状态
- 步骤 1 使用jps命令在node1-4中查看Java进程
jps
- 步骤 2 访问http://node1弹性公网IP:50070,可以登录Namenode的Web界面:
至此部署Hadoop完成
成功来源于一点一滴的坚持!!!
|