实验环境:
主机名 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无密码登录机器master,node01,node02 ,方便后期复制文件和启动服务。因为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环境复制到node01和node02上:
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
分别修改node01和node02的/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.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1、配置文件hadoop-env.sh,指定hadoop的java运行环境
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 框架Yarn是Hadoop 自 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配置了hadoop的HDFS系统的命名,位置为主机的9000端口;
hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用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配置了hdfs的http的访问位置;
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> #每个Block有2个备份。
</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> #每个Block有2个备份。
</property>
6、配置文件mapred-site.xml,
这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,
同时指定: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节点: node01和node02
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进程:
node01和node02上有进程: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进程,node01和node02上的进程: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/