rpm -qa |grep java
rpm -e 软件包
tar -zxf jdk-8u131-linux-x64.tar.gz -C /opt/module
vim /etc/profile #添加环境变量
##JAVA_HOME##
export JAVA_HOME=/opt/module/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile ###刷新环境变量
java -version #查看java版本
tar -zxf hadoop-2.9.0.tar.gz -C /opt/module
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.9.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile ###刷新环境变量
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop101:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/module/hadoop-2.9.0/data/tmpvalue>
property>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop101value>
property>
export JAVA_HOME=/opt/module/jdk1.8.0 ###修改jdk位置
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
格式化namenode(HDFS)(第一次格式化,在/opt/module/hadoop-2.9.0/下操作)
bin/hdfs namenode -format
启动namenode(HDFS)
sbin/hadoop-daemon.sh start namenode #启动
sbin/hadoop-daemon.sh stop namenode #停止
集群操作(HDFS)
bin/hdfs dfs -mkdir -p /user/mapreduce/wordcount/input ##创建文件夹
bin/hdfs dfs -put wcinput/wc.input /user/mapreduce/wordcount/input/ ##上传文件
bin/hdfs dfs -ls /user/mapreduce/wordcount/input/ ##查看文件
bin/hdfs dfs -rm -R /user/atguigu/mapreduce/wordcount/output ##删除文件夹
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/mapreduce/wordcount/input /user/mapreduce/wordcount/output ##运行jar文件程序
查看信息
[root@hadoop101 ~]# jps
13586 NameNode
13668 DataNode
13786 Jps
启动resourcemanager(YARN)
sbin/yarn-daemon.sh start resourcemanager
启动nodemanager(YARN)
sbin/yarn-daemon.sh start nodemanager
集群操作(YARN)
http://192.168.1.101:8088/cluster
配置mapred-site.xml 历史服务配置启动查看
<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop101:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>hadoop101:19888value>
property>
ls sbin/ |grep mr #查看历史服务器目录,此处为mr-jobhistory-daemon.sh
sbin/mr-jobhistory-daemon.sh start historyserver #启动后 http://local:19888/jobhistory 查看
配置yarn-site.xml 开启日志聚集功能
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
ssh 192.168.1.103 #基本语法
生成公钥、私钥
cd ~/.ssh
ssh-keygen -t rsa
将生成的公钥拷贝到要免密登录的主机上(自己也要)
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
.ssh文件夹下的文件功能解释
(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无秘登录服务器公钥
(1)查看rsync使用说明
man rsync | more
(2)基本语法
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
选项
-r 递归
-v 显示复制过程
-l 拷贝符号连接
(3)案例实操
把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目录
rsync -rvl /opt/tmp/* root@hadoop103:/opt/tmp
编写集群分发脚本xsync (/usr/local/bin)
#!/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=103; host<105; host++)); do
#echo $pdir/$fname $user@hadoop$host:$pdir
echo --------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
core-site.xml
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop102:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/module/hadoop-2.9.0/data/tmpvalue>
property>
hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0
hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop104:50090value>
property>
configuration>
slaves
hadoop102
hadoop103
hadoop104
yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop103value>
property>
configuration>
mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
配置文件分发,分发上面的配置文件
cd /opt/module/hadoop-2.7.2/etc/hadoop
xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves
hadoop102
bin/hdfs namenode -format #格式化节点
sbin/start-dfs.sh #启动
hadoop103
sbin/start-yarn.sh #启动
rpm -qa|grep ntp
vi /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #修改内容
#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
server 127.127.1.0
fudge 127.127.1.0 stratum 10 #添加内容
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes #添加内容
重启ntpd并设置开机自启动和同步任务
service ntpd start
chkconfig ntpd on #设置开机自启动
crontab -e #设置同步任务
*/10 * * * * /usr/sbin/ntpdate hadoop102 #设置每10分钟同步一次 hadoop102为时间服务器
1)防火墙没关闭、或者没有启动yarn
INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
2)主机名称配置错误
3)ip地址配置错误
4)ssh没有配置好
5)root用户和atguigu两个用户启动集群不统一
6)配置文件修改不细心
7)未编译源码
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/05/22 15:38:58 INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
8)datanode不被namenode识别问题
Namenode在format初始化的时候会形成两个标识,blockPoolId和clusterId。新的datanode加入时,会获取这两个标识作为自己工作目录中的标识。
一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然持有原来的id,就不会被namenode识别。
解决办法,删除datanode节点中的数据后,再次重新格式化namenode。
9)不识别主机名称
java.net.UnknownHostException: hadoop102: hadoop102
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
解决办法:
(1)在/etc/hosts文件中添加192.168.1.102 hadoop102
(2)主机名称不要起hadoop hadoop000等特殊名称
10)datanode和namenode进程同时只能工作一个。
11)执行命令 不生效,粘贴word中命令时,遇到-和长–没区分开。导致命令失效
解决办法:尽量不要粘贴word中代码。
12)jps发现进程已经没有,但是重新启动集群,提示进程已经开启。原因是在linux的根目录下/tmp目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。
13)jps不生效。
原因:全局变量hadoop java没有生效,需要source /etc/profile文件。
14)8088端口连接不上
[atguigu@hadoop102 桌面]$ cat /etc/hosts
注释掉如下代码
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 hadoop102