Hadoop安装

hadoop安装

管理员
2025年6月25日
大数据
#大数据

1. 实验环境

3台虚拟机IP及机器名称如下:

IP地址               主机名     角色

192.168.43.205  master    Namenode

192.168.43.79   slave1    Datanode1

192.168.43.32   slave2    Datanode2

 

2. FQND配置

[root@master ~]# cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

 

192.168.43.205  master

192.168.43.79   slave1

192.168.43.32   slave2

 

3. 免密码登录

[root@master ~]#ssh-keygen

[root@master ~]#ssh-copy-id 192.168.43.205

[root@master ~]#ssh-copy-id 192.168.43.79

[root@master ~]#ssh-copy-id 192.168.43.32 

验证是否生效

[root@master ~]# ssh 192.168.43.79

[root@master ~]# ssh 192.168.43.32

 

复制到其他两台机器

[root@master ~]#scp /etc/hosts root@192.168.43.79:/etc/

[root@master ~]#scp /etc/hosts root@192.168.43.32:/etc/

重启生效

 

4. 安装JAVA环境

三台机器都要安装

#wget http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz

[root@master ~]# tar -xvf jdk-8u172-linux-x64.tar.gz -C /opt

 

环境变量

[root@master ~]# vim /etc/profile      #在文末添加以下内容

####################JDK

export JAVA_HOME=/opt/jdk1.8.0_172

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

[root@master ~]# source /etc/profile    #使配置文件生效

 

验证java运行是否成功

[root@master ~]# java -version

java version "1.8.0_172"                

Java(TM) SE Runtime Environment (build 1.8.0_172-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

如果出现对应版本,则说明java运行环境安装成功

如果本来就有java环境,升级java也是一样安装,会优先执行高版本

 

将jdk环境部署到其他两台机器上去

[root@master ~]# scp -r /opt/jdk1.8.0_172 slave1:/opt

[root@master ~]# scp -r /opt/jdk1.8.0_172 slave2:/opt/

[root@master ~]# scp -r /etc/profile slave1:/etc/

[root@master ~]# scp -r /etc/profile slave2:/etc/

 

验证其他两台服务器

[root@slave1 ~]# source /etc/profile

[root@slave1 ~]# java -version 

[root@slave2 ~]# source /etc/profile

[root@slave2 ~]# java -version

5. 安装hadoop

5.1 安装hadoop

#wget http://archive.apache.org/dist/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz

[root@master ~]# tar -zxf hadoop-2.8.4.tar.gz -C /opt

 

5.2 创建临时目录和文件目录

[root@master~]# mkdir /opt/hadoop-2.8.4/tmp/

[root@master~]# mkdir /opt/hadoop-2.8.4/dfs/name

[root@master~]# mkdir /opt/hadoop-2.8.4/dfs/data

 

5.3 配置文件

主要配置文件:/opt/hadoop-2.8.4/etc/hadoop

文件名称:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

hadoop-env.sh    #java环境变量脚本

yarn-env.sh         #制定yarn框架的java运行环境,它将资源管理和 处理组件分开。基于YARN的架构不受                              MapReduce约束

slaves                  #指定datanode数据存储服务器

core-site.xml       #指定访问hadoop web界面的路径

hdfs-site.xml       #文件系统的配置文件

mapred-site.xml   #mapreducer任务配置文件

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

 

5.4 修改配置文件

修改前最好先备份一份,避免出错

[root@master etc]# cp -r hadoop/ hadoop.bak

1)配置文件 hadoop-env.sh,指定hadoop的java运行环境该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。

[root@master hadoop]# vim hadoop-env.sh

改:25 export JAVA_HOME=${JAVA_HOME}

为:export JAVA_HOME=/opt/jdk1.8.0_172

注:指定java运行环境变量

 

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

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

[root@master hadoop]# vim yarn-env.sh

改:26 JAVA_HOME=$JAVA_HOME

为:26 JAVA_HOME=/opt/jdk1.8.0_172

 

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

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

[root@master hadoop]#vim slaves

slave1

slave2

 

4) 配置文件core-site.xml,指定访问hadoopweb界面访问路径这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先mkdir新建。

[root@master hadoop]#vim core-site.xml

<configuration>

    <property>

       <name>fs.defaultFS</name>

       <value>hdfs://192.168.43.205:9000</value>

    </property>

    <property>

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

       <value>file:/opt/hadoop-2.8.4/tmp</value>

    </property>

</configuration>

 

5)配置文件 hdfs-site.xml

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

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

[root@master hadoop]#vim hdfs-site.xml

<configuration>

<!-- 通过web界面来查看HDFS状态 -->

    <property>

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

        <value>master:9001</value>  

    </property>

    <property>

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

        <value>file:/opt/hadoop-2.8.4/dfs/name</value>

    </property>

<property>

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

        <value>file:/opt/hadoop-2.8.4/dfs/data</value>

</property>

<!-- 每个Block有2个备份-->

<property>

        <name>dfs.repliction</name>

        <value>2</value>   

</property>

</configuration>

 

6)配置文件mapred-site.xml

这个是mapreduce任务的配置,由于hadoop2.x使用yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置yarn.mapred.map.tasks和mapred.reduce.tasks分别为 map和reduce的任务数,同时指定:Hadoop的历史服务器historyserver。

生成mapred-site.xml

[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml

[root@master hadoop]# vim mapred-site.xml

<configuration>

 <property>

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

          <value>yarn</value>

     </property>

</configuration>

 

7)配置节点 yarn-site.xml

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

[root@master hadoop]# vim 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:8035</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.log-aggregation-enable</name>

   <value>true</value>

</property>

 

<!-- 日志保留时间设置7天 -->

<property>

   <name>yarn.log-aggregation.retain-seconds</name>

   <value>604800</value>

</property>

 

</configuration>

7个要修改的配置文件,到这里完成!

 

复制到其他datanode节点:

[root@master ~]# scp -r /opt/hadoop-2.8.4/ slave1:/opt

[root@master ~]# scp -r /opt/hadoop-2.8.4/ slave2:/opt

 

5.5 配置环境变量

[root@master ~]# vim /etc/profile  

####################HADOOP

export HADOOP_HOME=/opt/hadoop-2.8.4/

export PATH=$PATH:$HADOOP_HOME/bin

[root@master bin]# source /etc/profile

其他两台也是一样操作,可scp复制过去

 

5.6 管理节点

1) 格式化

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

注意:只需要一次就行了,因为格式化会改变ID号,多次格式化会导致namenode角色跟datanode角色ID号不一致,最后会导致,namenode启动正常,但是slave的datanode启动不了

[root@master ~]# /opt/hadoop-2.8.4/bin/hdfs namenode -format

15/08/03 22:35:21 INFO common.Storage:Storage directory /usr/local/hadoop-2.8.4/dfs/name has been successfully formatted.

。。。。。。

15/08/03 22:35:21 INFOutil.ExitUtil: Exiting with status 0

15/08/03 22:35:21 INFO namenode.NameNode:SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at master/192.168.43.205

************************************************************/

[root@master ~]# echo $?       

0

#检测上一次执行的命令是否正确 0正确 非0 错误

 

查看格式化后,生成的文件:

[root@master ~]# yum -y install tree 

[root@master ~]# tree /opt/hadoop-2.8.4/dfs

/opt/hadoop-2.8.4/dfs

├── data

└── name

└── current

├── fsimage_0000000000000000000

├── fsimage_0000000000000000000.md5

├── seen_txid

└── VERSION

3 directories, 4 files

 

2) 启动hdfs

[root@master ~]#/opt/hadoop-2.8.4/sbin/start-dfs.sh

 

注:如果报错,如:

Slave1: Host key verification failed.

解决:

[root@master ~]# ssh slave1 #确认可以输入密码直接连接上slave1

关闭后再重启:

[root@master ~]# /opt/hadoop-2.8.4/sbin/stop-dfs.sh

[root@master ~]# /opt/hadoop-2.8.4/sbin/start-dfs.sh

 

3)启动yarn

[root@master ~]#/opt/hadoop-2.8.4/sbin/start-yarn.sh

 

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

[root@master ~]# /opt/hadoop-2.8.4/sbin/start-all.sh 

[root@master ~]# /opt/hadoop-2.8.4/sbin/stop-all.sh

 

4)启动历史服务器

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

[root@master ~]#/opt/hadoop-2.8.4/sbin/mr-jobhistory-daemon.shstart historyserver

 

浏览器访问:http://ip:19888

 

5)通过jps查看进程

[root@master ~]# jps

4565 SecondaryNameNode    #辅助namenode

4749 ResourceManager     #管理应用资源

4404 NameNode        #管理节点

3277 JobHistoryServe     #历史服务器

2527 Jps

 

[root@slave1 ~]# jps

1744 Jps

2354 NodeManager       #从节点资源管理

2246 DataNode         #数据节点

 

[root@slave2 ~]# jps

1644 Jps

2085 NodeManager       #从节点资源管理

1977 DataNode         #数据节点

 

6. 其它

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

#/opt/hadoop-2.8.4/bin/hdfs dfsadmin -report

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

#/opt/hadoop-2.8.4/bin/hdfs fsck / -files -blocks

3)Web查看HDFS: http://192.168.43.205:50070

4)通过Web查看hadoop集群状态: http://192.168.43.205:8088

最后更新于 2025/6/25