Linux-部署Hadoop环境

 

实验环境:

 

       主机名          IP地址              角色

 

master         192.168.1.201        NameNode 
node01        192.168.1.202        DataNode1 
node02        192.168.1.203        DataNode2

 

实验前期环境准备:

 

三台机器上配置hosts文件,如下:

 

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

 

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

192.168.1.201   master

 

192.168.1.202   node01

 

192.168.1.203   node02

 

scp  /etc/hosts  root@192.168.1.202:/etc/

 

scp  /etc/hosts  root@192.168.1.203:/etc/

 

创建运行hadoop用户账号和Hadoop目录。  尽量不用root帐号运行

 

xshell中:

 

 

输入:useradd -u 8000 hadoop

 

        echo 123456 | passwd --stdin hadoop

 

配置在master上,可以ssh无密码登录机器masternode01node02 ,方便后期复制文件和启动服务。因为namenode启动时,会连接到datanode上启动对应的服务。

 

su hadoop

 

ssh-keygen(一路回车)

 

导入公钥到其他datanode节点认证文件

 

ssh-copy-id 192.168.1.201

 

ssh-copy-id 192.168.1.202

 

ssh-copy-id 192.168.1.203

 

 

 

配置Hadoop环境,安装Java环境JDK:三台机器上都要配置

 

master安装jdk

 

上传jdk软件包到master

 

tar xf jdk-8u171-linux-x64.tar.gz

 

mv jdk-8u171 /usr/local/jdk

 

vim /etc/profile           #设置java的环境变量

 

在文件末尾添加以下内容:

 

export JAVA_HOME=/usr/local/jdk

 

export JAVA_BIN=/usr/local/jdk/bin

 

export PATH=${JAVA_HOME}/bin:$PATH

 

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

 

source /etc/profile       #是配置文件生效

 

验证:

 

       Java -version

 

将此java环境复制到node01node02上:

 

scp -r /usr/local/jdk root@192.168.1.202:/usr/local/jdk

 

scp -r /usr/local/jdk root@192.168.1.203:/usr/local/jdk

 

分别修改node01node02/etc/profile文件:

 

添加:

 

export JAVA_HOME=/usr/local/jdk

 

export JAVA_BIN=/usr/local/jdk/bin

 

export PATH=${JAVA_HOME}/bin:$PATH

 

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

 

然后使配置生效:

 

source /etc/profile

 

测试:

 

       Java -version

 

 

 

xuegod63安装Hadoop 并配置成namenode主节点

 

上传软件包到服务器并解压:

 

hadoop的安装目录是:/home/hadoop/hadoop-2.6.5

 

tar xf hadoop-2.6.5-tar.gz -C /home/hadoop/

 

 

 

创建hadoop相关的工作目录

 

       mkdir -p /home/hadoop/dfs/name

 

       mkdir -p /home/hadoop/dfs/data

 

       mkdir -p /home/hadoop/tmp

 

ls /home/hadoop/

 

hadoop-2.6.5  dfs  tmp

 

 

 

配置Hadoop:需要修改7个配置文件

 

文件位置:/home/hadoop/hadoop-2.6.5/etc/hadoop/

 

文件名称: hadoop-env.shyarn-evn.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml

 

1、配置文件hadoop-env.sh,指定hadoopjava运行环境

 

cd /home/hadoop/hadoop-2.6.5/etc/hadoop/

 

vim hadoop-env.sh

 

改:25 export JAVA_HOME=${JAVA_HOME}

 

为:25 export JAVA_HOME=/usr/local/jdk

 

注:指定java运行环境变量

 

2、配置文件yarn-env.sh,指定yarn框架的java运行环境

 

该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

 

yarn Hadoop 的新 MapReduce 框架YarnHadoop 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理。

 

vim yarn-env.sh

 

改:26   JAVA_HOME=$JAVA_HOME

 

为:26   JAVA_HOME=/usr/local/jdk

 

3、配置文件slaves ,指定datanode 数据存储服务器

 

将所有DataNode的机器名字写入此文件,每个主机名一行:配置如下

 

vim slaves

 

改: localhost

 

为:  node01

 

        node02

 

4、配置文件core-site.xml,指定访问hadoop web界面访问路径

 

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoopHDFS系统的命名,位置为主机的9000端口;

 

hadoop.tmp.dir配置了hadooptmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

 

vim core-site.xml

 

19行和20行之间插入以下内容:

 

<configuration>

 

<property>

 

      <name>fs.defaultFS</name>

 

          <value>hdfs://master:9000</value>       #修改为NameNode的主机名即本机的主机名

 

 </property>

 

 

 

 <property>

 

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

 

         <value>131072</value>

 

 </property>

 

 

 

 <property>

 

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

 

         <value>file:/home/hadoop/tmp</value>

 

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

 

 </property>

 

</configuration>

 

 

 

5、配置文件hdfs-site.xml

 

这个是hdfs的配置文件,dfs.http.address配置了hdfshttp的访问位置;

 

dfs.replication配置了文件块的副本数,一般不大于从机的个数。

 

改:19 <configuration>

 

    20

 

 21 </configuration>

 

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

 

为:

 

<configuration>

 

  <property>

 

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

 

      <value>master:9001</value>   # 通过web界面来查看HDFS状态

 

  </property>

 

 

 

  <property>

 

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

 

      <value>file:/home/hadoop/dfs/name</value>

 

  </property>

 

 <property>

 

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

 

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

 

 </property>

 

 

 

 <property>

 

    <name>dfs.replication</name>

 

    <value>2</value>    #每个Block2个备份。

 

 </property>

 

 

 

 <property>

 

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

 

        <value>true</value>

 

 </property>

 

 

 

</configuration>

 

 

 

注:

 

<property>

 

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

 

      <value>master:9001</value>   # 通过web界面来查看HDFS状态

 

  </property>

 

 <property>

 

    <name>dfs.replication</name>

 

    <value>2</value>    #每个Block2个备份。

 

 </property>

 

 

 

6、配置文件mapred-site.xml

 

这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarnmapred.map.tasksmapred.reduce.tasks分别为mapreduce的任务数,

 

同时指定:Hadoop的历史服务器historyserver

 

Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop历史服务器

 

vim mapred-site.xml-template

 

改:19 <configuration>

 

 20

 

 21 </configuration>

 

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

 

为:

 

<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>

 

 

 

copy mapred-site.xml.template mapred-site.xml

 

/home/hadoop/hadoop-2.6.5/sbin/mr-jobhistory-daemon.sh  start historyserver

 

这样我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面。可以查看已经运行完的作业情况。

 

7、配置节点yarn-site.xml

 

该文件为yarn框架的配置,主要是一些任务的启动位置

 

vim yarn-site.xml

 

改:

 

<configuration>

 

 

 

<!-- Site specific YARN configuration properties -->

 

 

 

</configuration>

 

注: 在<configuration></configuration>中间插入以一下红色和蓝色标记内容:

 

 

 

为:

 

<configuration>

 

 

 

<!-- Site specific YARN configuration properties -->

 

 <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>

 

 

 

</configuration>

 

 

 

复制到其他datanode节点: node01node02

 

scp -r /home/hadoop/hadoop-2.6.5/ hadoop@node01:~/

 

scp -r /home/hadoop/hadoop-2.6.5/ hadoop@node02:~/

 

xuegod63上启动Hadoop

 

切换到hadoop用户:

 

hadoop namenode的初始化,只需要第一次的时候初始化,之后就不需要了

 

/home/hadoop/hadoop-2.2.0/bin/hdfs namenode -format

 

启动hdfs: ./sbin/start-dfs.sh,即启动HDFS分布式存储

 

/home/hadoop/hadoop-2.2.0/sbin/start-dfs.sh

 

 

 

 

 

查看进程,此时master有进程:namenode secondarynamenode进程:

 

node01node02上有进程DataNode 

 

xuegod63上启动yarn:

 

/home/hadoop/hadoop-2.6.5/sbin/start-yarn.sh  # 即,启动分布式计算

 

starting yarn daemons

 

starting resourcemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-resourcemanager-master.out

 

node01: starting nodemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-nodemanager-node01.out

 

node02: starting nodemanager, logging to /home/hadoop/hadoop-2.6.5/logs/yarn-root-nodemanager-node02.out

 

查看进程:

 

查看master上的ResourceManager进程node01node02上的进程:DataNode NodeManager

 

注:start-dfs.sh  start-yarn.sh 这两个脚本可用start-all.sh代替。

 

启动:

 

/home/hadoop/hadoop-2.6.5/sbin/start-all.sh

 

关闭:

 

/home/hadoop/hadoop-2.6.5/sbin/stop-all.sh

 

启动:/apreduce运行状态

 

/home/hadoop/hadoop-2.6.5/sbin/mr-jobhistory-daemon.sh start historyserver

 

starting historyserver, logging to /home/hadoop/hadoop-2.2.0/logs/mapred-root-historyserver-master.out

 

查看HDFS分布式文件系统状态:

 

/home/hadoop/hadoop-2.6.5/bin/hdfs dfsadmin -report

 

查看文件块组成:  一个文件由哪些块组成

 

/home/hadoop/hadoop-2.2.0/bin/hdfs fsck / -files -blocks

 

 

 

Web查看HDFS:  

 

       http://192.168.1.201:50070

 

通过Web查看hadoop集群状态:  

 

http://192.168.1.201:8088 

 

 

 

附:hadoop中文文档http://hadoop.apache.org/docs/r1.0.4/cn/

 

 

 

posted @ 2020-06-05 15:43  Vampire-Min  阅读(346)  评论(0编辑  收藏  举报