天天看点

Hadoop学习--搭建hadoop集群1.安装环境 2.安装前准备3.安装配置Hadoop 4.初始化及运行

目录

1.安装环境 

2.安装前准备

3.安装配置Hadoop

4.初始化及运行

1.安装环境 

本博客所安装的hadoop只有HDFS、YARN以及MapReduce组件,不包含Hadoop其他组件的安装。

1)准备4台虚拟机(CentOS 7),ip与主机名如下:

  • 192.168.134.128 master
  • 192.168.134.129 slave1
  • 192.168.134.130 slave2
  • 192.168.134.131 slave3

主机规划: 192.168.134.128做master,运行NameNode和ResourceManager进程。其他三台主机做slave,运行DataNode和NodeManager进程。

2)Java版本:jdk1.8.0_141

3)Hadoop版本:hadoop-2.9.2

2.安装前准备

第1、2步使用root用户执行,3、4步使用grid用户执行。

1)分别在4台机器上建立grid用户

#新建用户grid,主目录为/home/grid,如果该目录不存在则创建

useradd -d /home/grid

#将grid用户添加到root组

usermod -a -G root grid

2)分别在四台机器上的/etc/hosts/文件中添加如下内容,用做域名解析

192.168.134.128 master

192.168.134.129 slave1

192.168.134.130 slave2

192.168.134.131 slave3

3)分别在4台机器上安装java

tar -zxvf [java压缩包目录] -C [解压到的目标路径] 

4)配置ssh免密登陆

这里配置任意两台机器之间都可以免密登陆

①分别在4台机器上生成密钥对,注意这里需要在4台机器上都执行。

#进入grid用户的主目录

cd ~

#生成密钥对

ssh-keygen -t rsa

然后一路按回车键。

②在master上执行

#进入.ssh

cd ~/.ssh/

#把本机的公钥追加到自身的~/.ssh/authorized_keys文件里

ssh-copy-id master

#将authorized_keys文件复制到slave1主机

scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/

③在slave1上执行

cd ~/.ssh/

ssh-copy-id slave1

scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/

④在slave2上执行

cd ~/.ssh/

ssh-copy-id slave2

scp /home/grid/.ssh/authorized_keys slave3:/home/grid/.ssh/

⑤在slave3上执行

cd ~/.ssh/

ssh-copy-id slave3

#此时authorized_keys文件中已经包含所有4台主机的公钥,将它复制到其他3台主机

scp /home/grid/.ssh/authorized_keys master:/home/grid/.ssh/

scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/

scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/

到这里ssh的免密登陆就配置完成了。

3.安装配置Hadoop

以下操作均使用grid用户在master主机上执行

1)安装hadoop

cd  ~

tar  -zxvf  ~/upload/hadoop-2.9.2.tar.gz  -C  ~/

2)建立目录

cd  ~/hadoop-2.9.2

mkdir  tmp

mkdir  hdfs

mkdir  hdfs/name

mkdir hdfs/data

3)修改配置文件

①编辑~/home/grid/hadoop-2.9.2/etc/hadoop/core-site.xml文件,添加如下内容:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

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

<value>file:///home/grid/hadoop-2.9.2/tmp</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

</configuration>

说明:core-site.xml是Hadoop的全局配置文件,这里配置了三个参数

  • fs.defaultFS:默认文件系统的名称,URI形式,默认是本地文件系统,这里配置了使用HDFS文件系统,namenode在master上
  • hadoop.tmp.dir:Hadoop的临时目录,其他目录会基于此路径,是本地目录。
  • io.file.buffer.size:在读写文件时使用的缓存大小。这个大小应该是内存Page的倍数。

②编辑~/home/grid/hadoop-2.9.2/etc/hadoop/hdfs-site.xml文件,添加如下内容:

<configuration>

<property>

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

 <value>file:///home/grid/hadoop-2.9.2/hdfs/name</value>

</property>

<property>

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

 <value>file:///home/grid/hadoop-2.9.2/hdfs/data</value>

</property>

<property>

 <name>dfs.replication</name>

 <value>3</value>

</property>

<property>

 <name>dfs.namenode.secondary.http-address</name>

 <value>master:9001</value>

</property>

<property>

 <name>dfs.namenode.servicerpc-address</name>

 <value>master:10000</value>

</property>

<property>

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

 <value>true</value>

</property>

</configuration>

 说明:hdfs-site.xml是HDFS的配置文件,这里配置了6个参数。

  • dfs.namenode.name.dir:本地磁盘目录,用于NameNode存储FSImage文件。
  • dfs.datanode.data.dir:本地磁盘目录,HDFS存储数据块的地方。
  • dfs.replication:数据块副本数。
  • dfs.namenode.secondary.http-address:SecondaryNameNode的HTTP服务地址。
  • dfs.namenode.servicerpc-address:HDFS服务通信的RPC地址。如果设置该值,备份节点、数据节点和其他服务将会连接到指定地址。
  • dfs.webhdfs.enabled:指定是否在NameNode和DataNode上开启WebHDFS功能。

③ 编辑~/home/grid/hadoop-2.9.2/etc/hadoop/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>master:8032</value>

</property>

<property>

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

 <value>master:8030</value>

</property>

<property>

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

 <value>master:8031</value>

</property>

<property>

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

 <value>master:8033</value>

</property>

<property>

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

 <value>master:8088</value>

</property>

<property>

 <name>yarn.nodemanager.resource.memory-mb</name>

 <value>1024</value>

</property>

</configuration>

 说明:yarn-site.xml是YARN的配置文件,这里配置了8个参数。

  • yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可以运行MapReduce程序。
  • yarn.nodemanager.aux-services.mapreduce_shuffle.class:对应参考yarn.nodemanager.aux-services。
  • yarn.resourcemanager.address:ResourceManager对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。
  • yarn.resourcemanager.scheduler.address:调度器地址,是ResourceManager对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源,释放资源等。
  • yarn.resourcemanager.resource-tracker.address:ResourceManager对NodeManager暴露的地址。NodeManager通过该地址向RM汇报心跳,领取任务等。
  • yarn.resourcemanager.admin.address:ResourceManager对管理员暴露的访问地址,管理员通过该地址向RM发送管理命令等。
  • yarn.resourcemanager.webapp.address:ResourceManager对外Web UI地址,用户可以通过该地址在浏览器中查看集群各类信息。
  • yarn.nodemanager.resource.memory-mb:NodeManager总的可用物理内存,不能小于1024,注意,该参数一旦设置,整个运行过程中不可以动态修改。

④  编辑~/home/grid/hadoop-2.9.2/etc/hadoop/mapred-site.xml文件,添加如下内容:

<configuration>

<property>

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

 <value>yarn</value>

</property>

<property>

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

 <value>master:10020</value>

</property>

<property>

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

 <value>master:19888</value>

</property>

</configuration>

 说明:mapred-site.xml是MapReduce的配置文件,这里配置了三个参数:

  • mapreduce.framework.name:设置MapReduce的执行框架为yarn
  • mapreduce.jobhistory.address:MapReduce的历史服务器的位置
  • mapreduce.jobhistory.webapp.address:MapReduce历史服务器Web UI地址

⑤ 编辑~/home/grid/hadoop-2.9.2/etc/hadoop/slaves文件,添加如下内容:

192.168.134.129

192.168.134.130

192.168.134.131

 说明:配置Hadoop集群中的所有slave

⑥编辑~/home/grid/hadoop-2.9.2/etc/hadoop/hadoop-env.sh文件,添加如下内容:

export JAVA_HOME=/home/grid/jdk1.8.0_141

⑦编辑~/home/grid/hadoop-2.9.2/etc/hadoop/yarn-env.sh文件,添加如下内容:

export JAVA_HOME=/home/grid/jdk1.8.0_141

4)将hadoop主目录复制到各个从服务器上

scp  -r  ~/hadoop-2.9.2  slave1:/home/grid/

scp  -r  ~/hadoop-2.9.2  slave2:/home/grid/

scp  -r  ~/hadoop-2.9.2  slave3:/home/grid/

该操作的目的主要是使刚才在master主机上修改的配置文件在其他主机上生效。

5)配置环境变量

使用root用户分别在4台机器上的/etc/profile文件中添加如下环境变量:

#java

export JAVA_HOME=/home/grid/jdk1.8.0_141

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#hadoop

export HADOOP_HOME=/home/grid/hadoop-2.9.2

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

使环境变量生效:

source  /etc/profile

 4.初始化及运行

以下的操作均使用grid用户在master主机上执行

#格式化HDFS,注意这里只能格式化一次,不能多次格式化

hdfs  namenode  -format

#启动HDFS

start-dfs.sh

#启动yarn

start-yarn.sh

执行成功后,使用jps命令查看master节点上的java进程,可以看到主节点上启动了NameNode、SecondaryNameNode、ResourceManager进程,如下所示:

Hadoop学习--搭建hadoop集群1.安装环境 2.安装前准备3.安装配置Hadoop 4.初始化及运行

在slave节点上执行jps命令可以查看slave节点上的进程,可以看到slave节点上启动了DataNode、NodeManager进程,如下所示:

Hadoop学习--搭建hadoop集群1.安装环境 2.安装前准备3.安装配置Hadoop 4.初始化及运行

你还可以通过master节点的web接口来查看集群状态,输入网址:http://192.168.134.128:50070,可以看到如下:

Hadoop学习--搭建hadoop集群1.安装环境 2.安装前准备3.安装配置Hadoop 4.初始化及运行

到这里,就大功告成啦啦啦啦!!!撒花!!!

继续阅读