基于华为云搭建Hadoop集群

环境说明:3台华为云服务器

Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS

注意:以下提供的配置,其中有个别备注,要根据情况修改!

1.修改服务器的hosts文件

vi /etc/hosts

在文件中添加:各个服务器IP地址+主机名
注意:云服务器中只有一块内网网卡,外网地址不是直接配置在云服务器中,程序无法绑定公网IP地址。因此服务器本身要改为 —— 内网IP+主机名。不然在可能会在NameNode启动时报错:Cannot assign requested address

备注:也可选择修改各个服务器的主机名,方便查看,看情况决定

vi /etc/hostname

2.创建用户和组

为了安全,还是很有必要的

创建hadoop用户组

sudo addgroup hadoop

创建hadoop用户

sudo adduser -ingroup hadoop hadoop

给hadoop用户添加权限

vim /etc/sudoers
hadoop ALL=(ALL:ALL) ALL

对于用户的权限,后期调整补充(还没详细了解,暂时给ALL)

备注:创建新的用户使用hadoop主要是考虑到安全因素,一般配置的时候都是在root下配置的,使用的时候创建新用户使用hadoop。也可以用root启动和使用hadoop,但是root权限太大,可能因为某个误操作导致灾难性的后果,所以需要创建新的用户。

检验各个服务器之间能否连通

ping + 各个服务器主机名

3.为服务器安装jdk并配置环境变量

我的做法是:先下好想要的JDK包,然后scp传到服务器(速度会比较快,安装hadoop的时候也是选择了这么做)

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

scp 本地JDK存放路径 服务器用户名@IP地址:存放路径

建议:存放路径为/usr/java(需要新建java目录)
若是提示传入/usr ,可先传入临时目录,然后在使用命令mv移动

登录到服务器

安装JDK

tar -zxvf jdk.....(安装包名称)

配置JDK环境变量

vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_171
export JRE_HOME=/usr/java/jdk1.8.0_171/jre
export CLASSPATH=JAVA_HOME/lib export PATH=:PATH:JAVA_HOME/bin:JRE_HOME/bin

使配置生效

source /etc/profile

查看配置是否成功

《基于华为云搭建Hadoop集群》 java-version.png

4.配置服务器间的SSH免密码登录

各个服务器生成密钥(公: .pub/私),公钥要传到其他服务器

cd ~/.ssh
ls
ssh-keygen -t rsa -P ""

回车后,会提示三次输入信息,我们直接回车即可

可对id_dsa.pub,复制一份并改名,方便识别
cp id_dsa.pub id_dsa_序号.pub

各个服务器都生成密钥后,把公钥传给NameNode。

scp id_dsa.pub 服务器用户名@IP:~/.ssh

将所有服务器生成的公钥(id_rsa.pub)都追加到NameNode 的authorized_keys中

cat id_rsa_序号.pub >> authorized_keys

把authorized_keys传回其他节点,并写出节点的authorized_keys中
cp authorized_keys authorized_keys_total
scp authorized_keys_total 服务器用户名@IP:~/.ssh
cat authorized_keys_total >> authorized_keys

至此,配置完成。
输入命令ssh 主机名 ,根据提示输入“yes”
输入命令exit注销(Logout)

再次输入命令ssh 主机名 即可直接登录

5.NameNode安装Hadoop

下载好Hadoop安装包,传至服务器
下载地址:http://hadoop.apache.org/releases.html
scp 本地存放路径 服务器用户名@IP地址:存放路径
建议:存放路径为/usr/hadoop(新建hadoop目录)
若是提示传入/usr ,可先传入临时目录,然后在使用命令mv移动

安装

tar -zxvf Hadoop.....(安装包名称)

新建目录(重要)

在/usr/hadoop路径下:
mkdir dfs
mkdir dfs/name
mkdir dfs/data
mkdir tmp
/usr/hadoop/hadoop-2.7.3(我安装的版本)路径下:
mkdir logs
mkdir pids

配置环境 (master中文件配置建议使用0.0.0.0地址)

文件都在/usr/hadoop/hadoop-2.7.3/etc/hadoop 路径下

配置文件:hadoop-env.sh

export JAVA_HOME= JAVA路径

《基于华为云搭建Hadoop集群》 hadoop-env.png

配置文件:yarn-env.sh

export JAVA_HOME= JAVA路径

《基于华为云搭建Hadoop集群》 yarn-env.png

配置文件:slaves

《基于华为云搭建Hadoop集群》 slaves.png

配置文件:core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs:// nameNode主机名:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp(tmp路径)</value>

    <description>Abase for other temporary   directories.</description>
</property>

</configuration>

配置文件:hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/dfs/name(dfs/name路径)</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/dfs/data(dfs/data路径)</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

配置文件:mapred-site.xml

先创建然后编辑

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>nameNode主机名:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>nameNode主机名:19888</value>
</property>
</configuration>

配置文件:yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>nameNode主机名:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>nameNode主机名:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>nameNode主机名:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>nameNode主机名:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>nameNode主机名:8088</value>
</property>
</configuration>

至此环境配置完成!

将/usr/hadoop目录传输到其他dataNode的 /usr/hadoop目录中

scp -r hadoop 服务器用户名@IP:/usr/hadoop

在此,我选择先把/usr/hadoop目录传到本地,然后再从本地传到其他dataNode,感觉速度快了很多!如果传输时报错说 :权限拒绝,可以先把文件传送到非/usr目录下,然后再把目录再移动到/usr/

若是想直接从nameNode传到其他节点,要注意设置激活,不然一段时间后会掉线,停止传输

《基于华为云搭建Hadoop集群》 ssh.png

参考:http://www.talkwithtrend.com/Question/225451-1370171

配置环境变量,并启动hadoop,检查是否安装成功

配置环境变量

vim /etc/profile

export JAVA_HOME= java路径
export JRE_HOME=/usr/java/jre
export CLASSPATH=JAVA_HOME/lib export PATH=:PATH:JAVA_HOME/bin:JRE_HOME/bin

注意:使文件生效
source /etc/profile

启动Hadoop

cd /usr/hadoop/hadoop-2.7.3

bin/hdfs namenode -format :格式化nameNode
sbin/start-all.sh :启动Hadoop集群
stop-all.sh :停止Hadoop集群

备注:格式化nameNode成功的提示如下,要注意是否出现错误!若出现错误,不要启动集群,先根据提示解决文件。然后把新建目录(重要)那一步中新建的目录下的文件都删掉(注意!)后,再重新格式化。

《基于华为云搭建Hadoop集群》 format.png

检查是否安装成功

启动后分别在服务器中输入jps查看进程,若成功则显示:

nameNode:

《基于华为云搭建Hadoop集群》 nameNode.png

dataNode:

《基于华为云搭建Hadoop集群》 dataNode.png

至此,基于华为云搭建Hadoop集群完成,可以愉快的开始玩耍了!

如果对你有帮助,给我点个赞哦~(莫问前程,但行好事)

    原文作者:番茄ozz
    原文地址: https://www.jianshu.com/p/e7aa19ebd357
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞