Hadoop安装
hadoop安装
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