龙空技术网

怎么安装大数据计算核心软件Hadoop?进行分布式计算和存储第一篇

石哥话科技 157

前言:

今天姐妹们对“centos6安装杀毒软件”大约比较关怀,各位老铁们都需要了解一些“centos6安装杀毒软件”的相关内容。那么小编也在网摘上收集了一些有关“centos6安装杀毒软件””的相关文章,希望各位老铁们能喜欢,兄弟们快快来学习一下吧!

由于安装配置Hadoop牵涉的内容较多,我将Hadoop的安装配置拆成了3篇文章来讲述。

这是第一篇。



前期准备

由于大数据的安装和使用涉及的内容比较多,截止到这篇文章,我写的与大数据安装有关的文章已经超过10篇了,为了能把这个事情说清楚,不得不这么做。

在查看本文之前,一定要安装好CentOS Linux 8 并升级完内核和软件包,学会怎么使用SSH软件,学会怎么配置IP等操作,进行过集群规划和基础配置,安装并配置好时间同步chrony,安装并配置好Java开发工具包jdk,安装并配置好分布式环境的协调Zookeeper,安装并配置好文件分发软件Rsync,为了在测试时不去分心处理权限问题,还需要关闭SELinux并关闭防火墙Firewall(生产环境再打开)。

以上内容可以参考我发布过的以下文章:

1、知道Linux是怎么安装的吗?安装个CentOS Linux 8开始大数据开发

2、盘点两个经典Linux维护软件,详细讲讲SSH是个什么东西以及用法

3、Linux内核怎么升级?升级有什么好处?CentOS8升级内核并开启BBR

4、Linux怎么配置IP?CentOS8怎么重启网卡?配置/修改静态IP的方法

5、大数据开发前要做什么准备?8台Hadoop服务器进行集群规划前配置

6、如何保证大数据开发的服务器时间同步?chrony服务安装与配置

7、怎么在Linux上面安装jdk?大数据开发前必备软件在CentOS8上安装

8、大数据服务器之间是怎么配合的?分布式Zookeeper集群安装与配置

9、怎么把Linux 的文件快速传给10台服务器?文件分发软件的安装配置

10、Linux有防火墙和杀毒软件吗?怎么安装配置Firewall抵御网络攻击


集群规划

上面有篇文章进行了详细的集群规划的编写描述,这里简单叙述以下。

手里有一台Dell R620服务器,共有8块硬盘,通过VMware将虚拟机分布在这8块硬盘上,模拟8台服务器,模拟在一个机架上:

编号:/BJ0/LG0/hadoop221-228

221-222:NameNode,223-228:DataNode

集群规划如下:(服务器为hadoop221-hadoop228)

特别提示:

我们安装Hadoop的以下所有操作都可以先在一台服务器(Hadoop221)上操作,完毕以后再将这个虚拟服务器复制成出来7份,完成最终的部署。

也就是我们先完成Hadoop221的操作系统和软件的安装配置,然后复制出7份来。

下面正式开始。

相关软件的安装及配置安装配置时间同步软件chrony

参考上述文章,并根据上面的集群规划,我们在221上安装chrony。配置时我们把服务端server配置成192.168.1.222,这样后面复制出来的其它服务器就能直接在222服务器上获取时间了。全部安装完毕,我们直接在hadoop222上面启动Chrony服务即可完成所有的时间配置。

防火墙和SELINUX设置

因为Hadoop需要开启的端口很多,而且牵涉到很多的权限,所以我们在测试时将防火墙和SELINUX都关掉。

在生产环境中,需要针对不同的开放端口做针对性的设置。

参考上述关于防火墙和SELINUX的文章,关闭防火墙且关闭SELinux,大致的内容摘取如下:

systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config

相关参数修改如下:

#SELINUX=enforcing

SELINUX=disabled

重启服务器,然后查看防火墙和SELinux状态:

reboot

查看SELinux的状态

/usr/sbin/sestatus -v

查看防火墙状态

systemctl status firewalld

显示如下内容,则说明SELINUX已经关闭了


hostname相关设置

参考上面的集群规划文章,进行hostname的配置,具体内容摘取如下:

运行下面的命令,修改本机的hostname:

hostnamectl set-hostname hadoop221

222-228服务器上的hostname修改,等服务器安装完毕以后统一操作(本文的底部有相关内容)

hosts相关设置

参考上面的集群规划文章,进行hosts的配置,具体内容摘取如下:

由于一次次的录入IP地址,不利于管理,我们在hosts里面把服务器的hostname跟IP地址对应起来,输入下面的命令开始操作:

vi /etc/hosts

内容设置成如下所示:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.221 hadoop221
192.168.1.222 hadoop222
192.168.1.223 hadoop223
192.168.1.224 hadoop224
192.168.1.225 hadoop225
192.168.1.226 hadoop226
192.168.1.227 hadoop227
192.168.1.228 hadoop228
192.168.1.229 hadoop229
192.168.1.230 hadoop230


添加Hadoop用户

我们默认登录的是Tristone用户,需要切换到root用户。

su

录入下述命令来添加hadoop用户:

useradd hadoop

录入一遍"jiqun996"回车,再录入一遍"jiqun996"回车后将hadoop用户密码设置为"jiqun996"

passwd hadoop


安装并配置jdk

参考上述jdk的安装配置文章,具体内容摘取如下:

从Oracle上下载jdk,尽量不要使用其他版本的jdk,容易出现一些奇怪的问题,比如:没有jps命令,自己都不知道哪里出问题了。把下载的"jdk-8u231-linux-x64.tar.gz"传到服务器上。进入服务器保存这个文件的目录以后进行如下操作(下面的命令都是以root的权限操作的):

建立java的工作目录(文件夹)

mkdir /usr/java

解压JDK

tar -zxvf jdk-8u231-linux-x64.tar.gz

将JDK移动(剪切)到/usr/java/目录

mv jdk1.8.0_231/ /usr/java/

将JDK所有者设置为root

chown -R root:root /usr/java/jdk1.8.0_231/

设置JDK的软链接

ln -sf /usr/java/jdk1.8.0_231 /usr/local/jdk

修改全局环境变量:

vi /etc/profile

在文件底部添加以下内容:

export JAVA_HOME="/usr/local/jdk"

export PATH=$JAVA_HOME/bin:$PATH

加载新的全局环境变量:

source /etc/profile

运行jps命令,显示类似以下内容,就算安装jdk成功了

jps
安装并配置Zookeeper

参考上述Zookeeper的安装配置文章,具体内容摘取如下:

由于Zookeeper类似于民主选举,每台服务器分别投票共同选举一个作为leader,剩下的都是follower。基于这个原因,官方建议服务器集群设置为奇数台,偶数台的话会有一台的资源浪费。根据咱们的集群规划:226-228为我们的Zookeeper服务器。

因为Zookeeper需要一台一台的单独启动,所以咱们在hadoop221上配置好,到时候只在226-228上面启动即可。

下载Zookeeper(参考我写的相关文章)然后进行下列操作:

tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
mkdir /home/hadoop/server
mkdir -p /home/hadoop/data/zkdata
mkdir -p /home/hadoop/log/zklog
mv apache-zookeeper-3.5.6-bin/ /home/hadoop/server/
ln -sf /home/hadoop/server/apache-zookeeper-3.5.6-bin/ /home/hadoop/zookeeper
chown -R hadoop:hadoop /home/hadoop/*
vi /etc/profile

文件底部添加以下内容:

export ZOOKEEPER_HOME="/home/hadoop/zookeeper"

export PATH=$ZOOKEEPER_HOME/bin:$PATH

执行下述命令加载全局环境变量,然后切换到hadoop用户开始操作:

source /etc/profile
su hadoop
cd /home/hadoop/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi /home/hadoop/zookeeper/conf/zoo.cfg

内容调整如下:

dataDir=/home/hadoop/data/zkdata
dataLogDir=/home/hadoop/log/zklog/
server.226=hadoop226:2888:3888
server.227=hadoop227:2888:3888
server.228=hadoop228:2888:3888

最后不要忘了在每个服务器"/home/hadoop/data/zkdata/"下新建文件"myid"并把当前服务器编号写进去,举例:

echo 221 > /home/hadoop/data/zkdata/myid

启动的事情,这里先不操作,后面到配置226-228的时候再启动。

注意:虽然我们在配置文件中写明了服务器的列表信息,但是,我们还是需要去每一台服务 器去启动,不是一键启动集群模式。


安装并配置Hadoop

先从国内的源服务器上找到hadoop的下载链接,并复制链接地址:

下载Hadoop

先用root权限操作:先用root权限操作:先用root权限操作:

重要的事情说三遍:

cd /home/hadoop/server
wget 粘贴刚才复制的URL地址

软件包有340多M,下载时别着急

tar -zxvf hadoop-3.2.1.tar.gz
ln -sf /home/hadoop/server/hadoop-3.2.1/ /home/hadoop/hadoop
chown -R hadoop:hadoop /home/hadoop/*

配置全局环境变量文件profile

vi /etc/profile

在文件尾部添加以下内容,用root用户操作

export HADOOP_HOME="/home/hadoop/hadoop"

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

加载全局变量:

source /etc/profile
echo $HADOOP_HOME

下面以hadoop用户操作:下面以hadoop用户操作:下面以hadoop用户操作

重要的事情说三遍:

执行以下命令,建立相关的目录

su hadoop
rm -rf /home/hadoop/hadoop/share/doc #删除文档,很大,又没用
mkdir -p /home/hadoop/data/dfs/data
mkdir /home/hadoop/data/dfs/name
mkdir /home/hadoop/data/dfs/tmp
mkdir /home/hadoop/data/journaldata
cd /home/hadoop/hadoop/etc/hadoop
vi /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh

添加一行内容:

export JAVA_HOME="/usr/local/jdk"

修改配置文件core-site.xml

清空原来全部内容

echo > /home/hadoop/hadoop/etc/hadoop/core-site.xml
vi /home/hadoop/hadoop/etc/hadoop/core-site.xml

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定hdfs的nameservice为myha01 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://myha01/</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/data/dfs/tmp</value>

</property>

<!-- 指定zookeeper地址 -->

<property>

<name>ha.zookeeper.quorum</name>

<value>hadoop226:2181,hadoop227:2181,hadoop228:2181</value>

</property>

<!-- hadoop链接zookeeper的超时时长设置 -->

<property>

<name>ha.zookeeper.session-timeout.ms</name>

<value>1000</value>

<description>ms</description>

</property>

<!-- 修改core-site.xml中的ipc参数,防止出现连接journalnode服务ConnectException -->

<property>

<name>ipc.client.connect.max.retries</name>

<value>100</value>

<description>Indicates the number of retries a client will make to establish a server connection.</description>

</property>

<property>

<name>ipc.client.connect.retry.interval</name>

<value>10000</value>

<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>

</property>

<property>

<name>topology.script.file.name</name>

<value>10000</value>

<description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.</description>

</property>

</configuration>

修改配置文件hdfs-site.xml

echo > /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml #清空原来全部内容
vi /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml

内容如下

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定副本数 -->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!-- 配置namenode和datanode的工作目录-数据存储目录 -->

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop/data/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop/data/dfs/data</value>

</property>

<!-- 启用webhdfs -->

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致

dfs.ha.namenodes.[nameservice id]为在nameservice中的每一个NameNode设置唯一标示符。

配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。

例如,如果使用"myha01"作为nameservice ID,并且使用"nn1"和"nn2"作为NameNodes标示符

-->

<property>

<name>dfs.nameservices</name>

<value>myha01</value>

</property>

<!-- myha01下面有两个NameNode,分别是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.myha01</name>

<value>nn1,nn2</value>

</property>

<!-- nn1的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.myha01.nn1</name>

<value>hadoop221:9000</value>

</property>

<!-- nn1的web通信地址 -->

<property>

<name>dfs.namenode.http-address.myha01.nn1</name>

<value>hadoop221:50070</value>

</property>

<!-- nn2的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.myha01.nn2</name>

<value>hadoop222:9000</value>

</property>

<!-- nn2的web通信地址 -->

<property>

<name>dfs.namenode.http-address.myha01.nn2</name>

<value>hadoop222:50070</value>

</property>

<!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表

该url的配置格式:qjournal : / / host1:port1;host2:port2;host3:port3/journalId

journalId推荐使用nameservice,默认端口号是:8485 -->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://hadoop223:8485;hadoop224:8485;hadoop225:8485/myha01</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/home/hadoop/data/journaldata</value>

</property>

<!-- 开启NameNode失败自动切换 -->

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->

<property>

<name>dfs.client.failover.proxy.provider.myha01</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence

shell(/bin/true)</value>

</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/home/hadoop/.ssh/id_rsa</value>

</property>

<!-- 配置sshfence隔离机制超时时间 -->

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

<property>

<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

<value>60000</value>

</property>

</configuration>

修改配置文件mapred-site.xml

echo > /home/hadoop/hadoop/etc/hadoop/mapred-site.xml #清空原来全部内容
vi /home/hadoop/hadoop/etc/hadoop/mapred-site.xml

全部内容如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定mr框架为yarn方式 -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>


<!-- 指定mapreduce jobhistory地址 -->

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop222:10020</value>

</property>


<!-- 任务历史服务器的web地址 -->

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop222:19888</value>

</property>

<property>

<name>mapreduce.application.classpath</name>

<value>/home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*</value>

</property>

</configuration>

修改配置文件yarn-site.xml

echo > /home/hadoop/hadoop/etc/hadoop/yarn-site.xml #清空原来全部内容
vi /home/hadoop/hadoop/etc/hadoop/yarn-site.xml

内容如下:

<?xml version="1.0"?>

<configuration>

<!-- 开启RM高可用 -->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>


<!-- 指定RM的cluster id -->

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>yrc</value>

</property>


<!-- 指定RM的名字 -->

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>


<!-- 分别指定RM的地址 -->

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>hadoop226</value>

</property>


<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>hadoop227</value>

</property>


<!-- 指定zk集群地址 -->

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>hadoop226:2181,hadoop227:2181,hadoop228:2181</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>86400</value>

</property>


<!-- 启用自动恢复 -->

<property>

<name>yarn.resourcemanager.recovery.enabled</name>

<value>true</value>

</property>


<!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->

<property>

<name>yarn.resourcemanager.store.class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

</property>

<property>

<name>yarn.application.classpath</name>

<value> /home/hadoop/hadoop/etc/hadoop:/home/hadoop/hadoop/share/hadoop/common/lib/*:/home/hadoop/hadoop/share/hadoop/common/*:/home/hadoop/hadoop/share/hadoop/hdfs:/home/hadoop/hadoop/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop/share/hadoop/hdfs/*:/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*:/home/hadoop/hadoop/share/hadoop/mapreduce/*:/home/hadoop/hadoop/share/hadoop/yarn:/home/hadoop/hadoop/share/hadoop/yarn/lib/*:/home/hadoop/hadoop/share/hadoop/yarn/*</value>

</property>

<property>

<!-- 客户端通过该地址向RM提交对应用程序操作 -->

<name>yarn.resourcemanager.address.rm1</name>

<value>hadoop226:8032</value>

</property>

<property>

<!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。 -->

<name>yarn.resourcemanager.scheduler.address.rm1</name>

<value>hadoop226:8030</value>

</property>

<property>

<!-- RM WEB访问地址,查看集群信息-->

<name>yarn.resourcemanager.webapp.address.rm1</name>

<value>hadoop226:8088</value>

</property>

<property>

<!-- NodeManager通过该地址交换信息 -->

<name>yarn.resourcemanager.resource-tracker.address.rm1</name>

<value>hadoop226:8031</value>

</property>

<property>

<!--管理员通过该地址向RM发送管理命令 -->

<name>yarn.resourcemanager.admin.address.rm1</name>

<value>hadoop226:8033</value>

</property>

<property>

<name>yarn.resourcemanager.ha.admin.address.rm1</name>

<value>hadoop226:23142</value>

</property>

<property>

<name>yarn.resourcemanager.address.rm2</name>

<value>hadoop227:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address.rm2</name>

<value>hadoop227:8030</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address.rm2</name>

<value>hadoop227:8088</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address.rm2</name>

<value>hadoop227:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address.rm2</name>

<value>hadoop227:8033</value>

</property>

<property>

<name>yarn.resourcemanager.ha.admin.address.rm2</name>

<value>hadoop227:23142</value>

</property>

</configuration>

修改配置文件workers

vi /home/hadoop/hadoop/etc/hadoop/workers

这个文件里面填写的是存储/计算节点(HDFS和YARN)的主机名称,内容如下:

hadoop223

hadoop224

hadoop225

hadoop226

hadoop227

hadoop228

至此Hadoop的基础安装配置部分全部完成。后面还有两篇,配置后操作以及第一次启动,日常如何启动,您可以持续关注后续文章。

标签: #centos6安装杀毒软件