Hadoop系列(二): Hadoop的完全分布式安装

之前,实现了Hadoop的伪分布式安装。现在来讲述一下Hadoop的集群分布,在多个虚拟机上进行安装hadoop并进行集群管理。

首先需要将一个虚拟机作为namenode也就是总的管理节点。另外选择三个虚拟机,作为数据节点datanode进行备份。在选择一个备用的secondary namenode作为namenode的备份。

现在我将逐步来分析如何进行hadoop的集群安装。

首先我们要安装一个linux虚拟机。然后对这个虚拟机进行一些基础的配置。

第一步  启动网卡

安装完成之后进入root用户 
输入命令 ifup ens33启动网卡

第二步  环境变量的设置

export JAVA_HOME=/root/app/jdk1.8.0_181
export HADOOP_HOME=/root/app/hadoop-2.8.4
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

上述的语句添加到 /etc/profile的底部

第三步 免密登录的实现

,,在实现与其他虚拟机的免密登录之前,需要将linux进行克隆。我们可以将我们之前安装好的mydb0虚拟机克隆出四个分别命名为mydb1,mydb2,mydb3,mydb4.

接下来需要修改主机名,按照刚才声明的名字依次修改各个主机的hostname(/etc/hostname)。

之后将这几个主机的ip和主机名添加到hosts文件中 。

vi  /etc/hosts

我的是这样的,你们需要根据你们的linux的ip进行添加

192.168.196.136     mydb0
192.168.196.132     mydb1
192.168.196.134     mydb2
192.168.196.135        mydb3
192.168.196.131        mydb4

之后打开mydb0,进入到root目录中

生成公私密钥
ssh-keygen -t rsa
添加公钥到授权key 文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
给授权文件权限
chmod 600 ~/.ssh/authorized_keys

之后我们将这个authorized_keys发送到其他的虚拟机上

首先需要进入到 ~/.ssh目录下。

依次执行以下的命令。

scp  authorized_keys root@mydb1:~/.ssh

scp  authorized_keys  root@mydb2:~/.ssh

scp  authorized_keys  root@mydb3:~/.ssh

scp  authorized_keys  root@mydb4:~/.ssh

这样免密登录就完成了。

第四步 shell文件生成

接下来,为了方便管理和监控其他四个结点的状态。我们可以声明一个shell文件。进入到root用户下的/user/local/bin文件夹下

声明一个xcall文件

粘贴如下的代码

pcount=$#

if((pcount < 1));
then
 echo no args;
 exit;
fi
for((host=4; host >=0; host--)); do
# echo $pdir/$dataFileName $cuser@xthadoop$host:$pdir
 echo "-------主机:mydb$host execute Result:-----------------"
 ssh mydb$host $@
 echo -e "\n\n\n"
done

之后需要为它添加权限


chmod 777 /usr/local/bin/xcall 修改权限

,ssh 远程机器 运行的命令只会运行/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin这些目录下的文件。如果想要运行jps , java这些jdk为我们提供的命令。我们需要将它们链接(link)到这个xcall文件上。

xcall ln -s -f  、/root/app/jdk1.8.0_181/bin/jps  /usr/local/bin/

这个路径是你的jdk安装的目录。

第五步 hadoop配置文件声明

和之前一样,我们在mydb0上安装一个hadoop然后进行解压。对其中的一些文件进行配置

进入到/etc/hadoop文件夹下

在hadoop-env.sh中首先设置jdk的绝对路径

接下来是core-site.xml

<property>
<name>fs.defaultFS</name>
<value>hdfs://mydb0:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/app/hadoop-2.8.4/tmp</value>
</property>

其次是hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
 <name>dfs.replication</name>
 <value>3</value>
</property>
<property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>mydb4:50090</value>
</property>

这个地方设置的是secondary namenode的位置。这个交给了mydb4进行管理。HDFS的副本数量设置为3,对应mydb1

mydb2 mydb3

之后是mapred-site.xml

<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
</property>

之后需要修改的是slaves文件,这个是设置数据节点的文件

之前伪分布式中设置的是localhost,现在需要修改为mydb1   mydb2   mydb3

最后yarn-site.xml文件(资源管理)

<!-- 指定YARN(ResourceManager)的地址 -->
<property>
 <name>yarn.resourcemanager.hostname</name>
 <value>mydb0</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

 需要在etc/hadoop/hadoop-env.sh中设置jdk的绝对路径

在etc/hadoop/slave文件中加上你配置的作为datanode的主机的名字

这些设置完毕后,我们的hadoop就算是配置完成了。

第六步  hadoop集群搭建

这一步主要是将hadoop安装到其他的linux上。我编写了一个sh文件。

在这个文件里面输入以下内容

scp -r /root/app/hadoop-2.8.4  mydb1:/root/app/

scp -r /root/app/hadoop-2.8.4  mydb2:/root/app/

scp -r /root/app/hadoop-2.8.4  mydb3:/root/app/

scp -r /root/app/hadoop-2.8.4  mydb4:/root/app/

然后执行这个脚本文件。这个复制需要很长时间。

第七步  hadoop 的 格式化以及启动

复制完成之后    在mydb0虚拟机上进行hadoop的格式化

hadoop  namenode -format

之后进入到sbin文件夹下启动start-all.sh脚本文件启动所有节点。

启动完成后运行xcall jps命令。如果出现以下情况就算安装成功

在mydb0上显示 namenode resourcemanager启动

在mydb1 , mydb2,mydb3上显示的datanode以及nodemanager启动

在mydb4上显示的是 secondary namenode启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值