下载hadoop解压
1 本地启动
运行官方案例,统计单词出现次数。输入路径:LICENSE.txt
,输出路径:output/wordcount
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount LICENSE.txt output/wordcount
然后再输出目录查看结果
2 伪分布式启动
2.1 修改配置文件
(1)core-site.xml:
<property>
<name>fs.defaultFS</name>
<value>hdfs://server:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-2.9.2/data/tmp</value>
</property>
(2)hdfs-site.xml
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
2.2 启动集群
(a)格式化 namenode(第一次启动时格式化,以后就不要总格式化)
[root@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
(b)启动 namenode
[root@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
(c)启动 datanode
[root@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
2.3 常用命令
- 创建文件夹:hdfs dfs -mkdir -p /var/hadoop/input
- 上传文件:hdfs dfs -put input/* /var/hadoop/input
- 查看文件[目录]:hdfs dfs -cat[ls] /var/hadoop/input
- 运行mapreduce程序:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /var/hadoop/input/ /var/hadoop/output
- 下载文件:hadoop fs -get /var/hadoop/output/part-r-00000 ./
- 删除文件:hdfs dfs -rm -r /var/hadoop/output
2.4 yarn上运行mr
(1)修改yarn-site.xml
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>server</value>
</property>
(2)修改mapred-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0
(3)修改yarn-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0
(4)修改mapred-site.xml
对 mapred-site.xml.template 重新命名为mapred-site.xml
<!-- 指定 mr 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)启动集群
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
重启resourcemanager,nodemanager, historymanager
3 完全分布式启动
3.1 ssh免密登录配置
以node1为例
进入home目录执行:ssh-keygen -t rsa,然后三个回车即可
执行:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
node2和node3执行同样的操作
3.2 集群部署规划
NameNode | DataNode | SecondaryNameNode | ResourceManager | NodeManager | |
---|---|---|---|---|---|
node1 | 1 | 1 | 1 | ||
node2 | 1 | 1 | 1 | ||
node3 | 1 | 1 | 1 |
3.3 集群配置文件
node1:
修改core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-2.9.2/data/tmp</value>
</property>
修改hdfs-site.xml
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定secondarynamenode -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:50090</value>
</property>
修改slaves,配置namenode
node1
node2
node3
修改yarn-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0
修改mapred-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0
修改hadoop-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0
修改yarn-site.xml
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
修改mapred-site.xml
对 mapred-site.xml.template 重新命名为mapred-site.xml
<!-- 指定 mr 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.4 编写集群分发脚本 xsync
在/usr/local/bin 这个目录下存放的脚本,可以在系统任何地方直接执行
vim /usr/local/bin/xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=2; host<4; host++)); do
#echo $pdir/$fname $user@node$host:$pdir
echo --------------- node$host ----------------
rsync -rvl $pdir/$fname $user@node$host:$pdir
done
执行xsync etc/hadoop/ 进行文件同步
3.5 启动、停止集群
(1)namenode节点格式化namenode
hdfs namenode -format
(2)启动集群
node1执行:start-dfs.sh
node2执行:start-yarn.sh
(3)停止集群
node1执行:stop-dfs.sh
node2执行:stop-yarn.sh
3.6 集群时间同步
这里让node2和node3跟node1同步
node2安装ntp服务:
yum install ntp -y
修改文件 /etc/ntp.conf,一共修改三处内容:
(1)restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap前面注释去掉
(2)将以下4个server进行#注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
(3)最后添加两句话
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
编辑etc/sysconfig/ntpd文件
SYNC_HWCLOCK=yes
OPTIONS=“-u ntp:ntp -p /var/run/ntpd.pid -g”
启动ntpd服务,并且设置开机启动
systemctl start ntpd.service
systemctl enable ntpd.service
子节点安装ntp,这里一定不能启动
设置调度任务:crontab -e
*/10 * * * * /usr/sbin/ntpdate node1
每10min从服务器同步一次时间
4 管理页面
hadoop管理页面:http://192.168.220.129:50070/dfshealth.html#tab-overview 即可进入管理页面
查看上传文件:
yarn管理页面:http://192.168.220.129:8088
5 配置历史服务器
配置 mapred-site.xml
<property>
<name>mapreduce.jobhistory.address</name>
<value>server:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>server:19888</value>
</property>
启动历史服务器:sbin/mr-jobhistory-daemon.sh start historyserver
然后再执行一个任务,会发现yarn管理页面上有历史任务,点击history查看即可
6 配置日志的聚集
配置 yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
重新执行一个任务,查看日志信息