搭建Hadoop环境

搭建Hadoop环境

虚拟机准备工作
虚拟机网络模式设置为NAT
在这里插入图片描述
在这里插入图片描述
最后,重新启动系统。
[root@node101 ~]# sync
[root@node101 ~]# reboot
克隆虚拟机
1)克隆虚拟机

在这里插入图片描述
**之后就是按着向导来,点下一步,选择虚拟机中的当前状态,下一步,创建完整克隆,下一步,改名(你喜欢的名字),存放位置(你喜欢的位置)
我就不放图了,挺简单的

**
2)启动虚拟机
修改为静态ip
1)在终端命令窗口中输入00:0C:29:E2:81:6E
[root@node101 /]#vi /etc/udev/rules.d/70-persistent-net.rules
进入如下页面,删除eth0该行;将eth1修改为eth0,同时复制物理ip地址
在这里插入图片描述
2)修改IP地址
[root@node101 /]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
需要修改的内容有5项:
IPADDR=192.168.16.12
GATEWAY=192.168.16.2
ONBOOT=yes
BOOTPROTO=static
DNS1=192.168.1.2
(1)修改前
在这里插入图片描述
(2)修改后
在这里插入图片描述
:wq 保存退出
3)执行service network restart
在这里插入图片描述
4)如果报错,reboot,重启虚拟机

修改主机名
1)修改linux的hosts文件
(1)进入Linux系统查看本机的主机名。通过hostname命令查看
[root@hadoop ~]# hostname
node100

master slave01
(2)如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/sysconfig/network文件
#vi /etc/sysconfig/network

文件中内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= node101
注意:主机名称不要有“_”下划线
(3)打开此文件后,可以看到主机名。修改此主机名为我们想要修改的主机名node101。
(4)保存退出。
(5)打开/etc/hosts
vim /etc/hosts
添加如下内容
192.168.16.50 qd50
192.168.16.51 qd51
192.168.16.52 qd52

(6)并重启设备,重启后,查看主机名,已经修改成功
2)修改windows的hosts文件
(1)进入C:\Windows\System32\drivers\etc路径
(2)打开hosts文件并添加如下内容
192.168.1.100 node100
192.168.1.101 node101
192.168.1.102 node102
192.168.1.103 node103
192.168.1.104 node104
192.168.1.105 node105
192.168.1.106 node106
192.168.1.107 node107
192.168.1.108 node108
192.168.1.109 node109
192.168.1.110 node110

关闭防火墙
1)查看防火墙开机启动状态
chkconfig iptables --list
2)关闭防火墙
chkconfig iptables off
service iptables stop
service iptables status

关闭selinux

vi /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled

vi /etc/resolv.conf
nameserver 8.8.8.8

为Hadoop创建独立操作账号
1)创建hadoop用户
在root用户里面执行如下操作
[root@node101 opt]# adduser hadoop
[root@node101 opt]# passwd hadoop
更改用户 test 的密码 。
新的 密码:
无效的密码: 它没有包含足够的不同字符
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
2)设置hadoop用户具有root权限
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
修改完毕,现在可以用hadoop帐号登录,然后用命令 su - ,即可获得root权限进行操作。

在opt目录下创建用于管理结构清晰的文件(非必须,只为有效管理)
1)在/opt目录下创建文件夹
(1)在root用户下创建wdp、soft文件夹
mkdir neau
mkdir soft
(2)修改wdp、soft文件夹的所有者
[root@node101 opt]# chown hadoop wdp
[root@node101 opt]# chown hadoop soft
[root@node101 opt]# ls -al
总用量 24
drwxr-xr-x. 6 root root 4096 4月 24 09:07 .
dr-xr-xr-x. 23 root root 4096 4月 24 08:52 …
drwxr-xr-x. 4 hadoop root 4096 4月 23 16:26 wdp
drwxr-xr-x. 2 root root 4096 3月 26 2015 rh
drwxr-xr-x. 2 hadoop root 4096 4月 23 16:25 soft

安装Hadoop
需要先装jdk
1)卸载现有jdk
(1)查询是否安装java软件:
rpm -qa|grep java
(2)如果安装的版本低于1.7,卸载该jdk:
rpm -e 软件包
2)用WinSCP工具将jdk、Hadoop-2.7.6.tar.gz导入到opt目录下面的soft文件夹下面
在这里插入图片描述
3)在linux系统下的opt目录中查看软件包是否导入成功。
[root@node101opt]# cd soft/
[root@node101soft]# ls
jdk-8u172-linux-x64.gz hadoop-2.7.6.tar.gz
4)解压jdk到/opt/wdp目录下
tar -zxvf jdk-8u172-linux-x64.gz -C /opt/wdp/
5)配置jdk环境变量
(1)先获取jdk路径:
[root@node101 jdk1.8.0_172]# pwd
/opt/wdps/jdk1.8.0_172
(2)打开/etc/profile文件:
[root@node101 jdk1.8.0_172]# vi /etc/profile
在profie文件末尾添加jdk路径:
##JAVA_HOME
export JAVA_HOME=/opt/wdps/jdk1.8.0_172
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
(3)保存后退出:
:wq
(4)让修改后的文件生效:
[root@node101 jdk1.8.0_172]# source /etc/profile
(5)重启(如果java –version可以用就不用重启):
[root@node101 jdk1.8.0_172]# sync
[root@node101 jdk1.8.0_172]# reboot
6)测试jdk安装成功
[root@node101 jdk1.8.0_172]# java -version
java version “1.7.0_79”

安装Hadoop
1)进入到Hadoop安装包路径下:
[root@node101 ~]# cd /opt/soft/
2)解压安装文件到/opt/wdp下面
[root@node101 soft]# tar -zxf hadoop-2.7.6.tar.gz -C /opt/wdp/
3)查看是否解压成功
[root@node101 soft]# ls /opt/wdp/
hadoop-2.7.6
4)配置hadoop中的hadoop-env.sh
(1)Linux系统中获取jdk的安装路径:
[root@node101 jdk1.8.0_172]# echo KaTeX parse error: Expected 'EOF', got '#' at position 163: …1 hadoop-2.7.6]#̲ pwd /opt/wdp/h…PATH: H A D O O P H O M E / b i n e x p o r t P A T H = HADOOP_HOME/bin export PATH= HADOOPHOME/binexportPATH=PATH:$HADOOP_HOME/sbin
(3)保存后退出:
:wq
(4)让修改后的文件生效:
root@ node101 hadoop-2.7.6]# source /etc/profile
(5)重启(如果hadoop命令不能用再重启):
root@ node101 hadoop-2.7.6]# sync
root@ node101 hadoop-2.7.6]# reboot

Hadoop的几种运行模式
1)官方网址
(1)官方网站:
http://hadoop.apache.org/
(2)各个版本归档库地址
https://archive.apache.org/dist/hadoop/common/
(3)hadoop2.7.6版本详情介绍
http://hadoop.apache.org/docs/r2.7.6/
2)Hadoop运行模式
(1)本地模式(默认模式):是否启动进程----没有,在几台机器上安装的—1台,
不需要启用单独进程,直接可以运行,测试和开发时使用。
(2)伪分布式模式:是否启动进程----需要,在几台机器上安装的—1台
等同于完全分布式,只有一个节点。
(3)完全分布式模式:是否启动进程----需要,在几台机器上安装的—多台
多个节点一起运行。

本地模式
本地模式不需要启动任何服务,可以直接运行mapreduce程序
本地模式运行官方grep案例
1)创建在hadoop-2.7.6文件下面创建一个input文件夹
[hadoop@node101 hadoop-2.7.6] m k d i r i n p u t 2 ) 将 h a d o o p 的 x m l 配 置 文 件 复 制 到 i n p u t [ h a d o o p @ n o d e 101 h a d o o p − 2.7.6 ] mkdir input 2)将hadoop的xml配置文件复制到input [hadoop@node101 hadoop-2.7.6] mkdirinput2hadoopxmlinput[hadoop@node101hadoop2.7.6]cp etc/hadoop/.xml input
3)执行share目录下的mapreduce程序
[hadoop@node101 hadoop-2.7.6]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep input output ‘dfs[a-z.]+’
4)查看输出结果
[hadoop@node101 hadoop-2.7.6]$ cat output/

本地模式运行官方wordcount案例
1)创建在hadoop-2.7.6文件下面创建一个wcinput文件夹
[hadoop@node101 hadoop-2.7.6] m k d i r w c i n p u t 2 ) 在 w c i n p u t 文 件 下 创 建 一 个 w c . i n p u t 文 件 [ h a d o o p @ n o d e 101 h a d o o p − 2.7.6 ] mkdir wcinput 2)在wcinput文件下创建一个wc.input文件 [hadoop@node101 hadoop-2.7.6] mkdirwcinput2wcinputwc.input[hadoop@node101hadoop2.7.6]cd wcinput
[hadoop@node101 wcinput] t o u c h w c . i n p u t 3 ) 编 辑 w c . i n p u t 文 件 [ h a d o o p @ n o d e 101 w c i n p u t ] touch wc.input 3)编辑wc.input文件 [hadoop@node101 wcinput] touchwc.input3wc.input[hadoop@node101wcinput]vim wc.input
在文件中输入如下内容
hello world
hello hadoop
hello spark
hello hive
hello hbase
hello yarn
hello fulme
hello kafka
保存退出::wq
4)回到hadoop目录/opt/wdp/hadoop-2.7.6
5)执行程序:
[hadoop@node101 hadoop-2.7.6]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount wcinput wcoutput
6)查看结果:java jar
Hadoop jar yarn jar
[hadoop@node101 hadoop-2.7.6]$cat wcoutput/part-r-00000
hello 8
hadoop 1
spark 1
hive 1
hbase 1
yarn 1
flume 1
kafka 1

伪分布式模式
伪分布式配置
在本地模式的基础上配置HDFS伪分布式
(1)配置集群
(a)配置:hadoop-env.sh
Linux系统中获取jdk的安装路径:
[root@ node101 ~]# echo $JAVA_HOME
/opt/wdps/jdk1.8.0_172
修改JAVA_HOME 路径:
export JAVA_HOME=/opt/wdps/jdk1.8.0_172
(b)配置:core-site.xml

fs.defaultFS hdfs://hrbu20:9000 hadoop.tmp.dir /opt/wdp/hadoop/data/tmp (c)配置:hdfs-site.xml dfs.replication 3 (2)启动集群5 (a)格式化namenode(第一次启动时格式化,以后就不要总格式化) bin/hdfs namenode -format (b)启动namenode sbin/hadoop-daemon.sh start namenode (c)启动datanode sbin/hadoop-daemon.sh start datanode start-dfs.sh (3)查看集群 (a)查看是否启动成功 [root@node101 ~]# jps 13586 NameNode 13668 DataNode 13786 Jps (b)查看产生的log日志 当前目录:/opt/wdp/hadoop-2.7.6/logs [root@node101 logs]# ls hadoop-root-datanode-hadoop.hadoop.com.log hadoop-root-datanode-hadoop.hadoop.com.out hadoop-root-namenode-hadoop.hadoop.com.log hadoop-root-namenode-hadoop.hadoop.com.out SecurityAuth-root.audit [root@node101 logs]# cat hadoop-root-datanode-hadoop.hadoop.com.log (c)web端查看HDFS文件系统 http://192.168.16.80:50070/dfshealth.html#tab-overview

在HDFS上运行MapReduce的WordCount 程序
(1)在hdfs文件系统上创建一个input文件夹
[hadoop@node101 hadoop-2.7.6]$ bin/hdfs dfs -mkdir -p /user/hadoop/mapreduce/wordcount/input
(2)将测试文件内容上传到文件系统上
bin/hdfs dfs -put wcinput/wc.input /user/hadoop/mapreduce/wordcount/input/
(3)查看上传的文件是否正确
bin/hdfs dfs -ls /user/hadoop/mapreduce/wordcount/input/
bin/hdfs dfs -cat /user/hadoop/mapreduce/wordcount/input/wc.input
(4)在Hdfs上运行mapreduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /user/hadoop/mapreduce/wordcount/input/ /user/hadoop/mapreduce/wordcount/output
(5)查看输出结果
命令行查看:
bin/hdfs dfs -cat /user/hadoop/mapreduce/wordcount/output/*
浏览器查看
(6)将测试文件内容下载到本地
hadoop fs -get /user/hadoop/mapreduce/wordcount/output/part-r-00000 ./wcoutput/
(7)删除输出结果
hdfs dfs -rmr /user/hadoop/mapreduce/wordcount/output

YARN上运行MapReduce 程序
1)在集群的基础上配置Yarn:
(1)配置yarn-env.sh中的JAVA_HOME
export JAVA_HOME=/opt/wdp/jdk
(2)配置yarn-site.xml

yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname qd50 (3)配置:mapred-env.sh 配置一下JAVA_HOME export JAVA_HOME=/opt/wdp/jdk (4)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml mapreduce.framework.name yarn 2)启动Yarn (1)启动resourcemanager sbin/yarn-daemon.sh start resourcemanager (2)启动nodemanager sbin/yarn-daemon.sh start nodemanager 3)Yarn的操作 (1)yarn的浏览器页面查看 http://192.168.1.101:8088/cluster (2)删除文件系统上的output文件 bin/hdfs dfs -rm -R /user/hadoop/mapreduce/wordcount/output (3)执行mapreduce程序 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /user/hadoop/mapreduce/wordcount/input /user/hadoop/mapreduce/wordcount/output (4)查看运行结果 bin/hdfs dfs -cat /user/hadoop/mapreduce/wordcount/output/*

完全分布式
虚拟机准备
克隆2-5台干净的虚拟机(最少2台,建议4台以上以体现出集群效果),利用scp和ssh工具统一传送和设置Hadoop集群。也可以克隆1台干净的虚拟机,做完所有Hadoop配置后,将处理好的虚拟机克隆为集群,别忘了修改集群机器的IP和主机名。
scp工具在集群中的应用
1)scp可以实现服务器与服务器之间的数据拷贝。
2)操作示例
(1)将node101中/opt/wdp和/opt/soft文件拷贝到node102、node103和node104上。
[root@node101 /]# scp -r /opt/wdp/ root@node102:/opt
[root@node101 /]# scp -r /opt/soft/ root@node102:/opt
[root@node101 /]# scp -r /opt/wdp/ root@node103:/opt
[root@node101 /]# scp -r /opt/soft/ root@node103:/opt
[root@node101 /]# scp -r /opt/wdp/ root@node104:/opt
[root@node101 /]# scp -r /opt/soft/ root@node105:/opt
(2)将192.168.1.102服务器上的文件拷贝到当前用户下。
[root@node101 opt]# scp root@node102:/etc/profile /opt/tmp/
(3)实现两台远程机器之间的文件传输(node103主机文件拷贝到node104主机上)
[hadoop@node102 test]$ scp hadoop@node103:/opt/test/haha hadoop@node104:/opt/test/

ssh无密码登录在集群中的应用
1)配置ssh
(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh连接时出现Host key verification failed的解决方法
[root@hadoop2 opt]# ssh 192.168.1.103
The authenticity of host ‘192.168.1.103 (192.168.1.103)’ can’t be established.
RSA key fingerprint is cf:1e🇩🇪d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
(3)解决方案如下:直接输入yes
2)无密钥配置
(1)进入到我的home目录
cd ~/.ssh
(2)生成公钥和私钥:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
ssh-copy-id 192.168.1.102
3).ssh文件夹下的文件功能解释
(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(public key)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无秘登录服务器公钥

rsync工具在集群中的应用
rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
(1)查看rsync使用说明
man rsync | more
(2)基本语法
rsync -rvl p d i r / pdir/ pdir/fname u s e r @ h a d o o p user@hadoop user@hadoophost:$pdir
命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径
选项
-r 递归
-v 显示复制过程
-l 拷贝符号连接
(3)操作示例
把本机/opt/tmp目录同步到node103服务器的root用户下的/opt/tmp目录
rsync -rvl /opt/tmp/* root@node103:/opt/tmp

编写集群文件分发工具脚本xsync
1)应用场景:循环复制文件到所有节点的相同目录下。
(1)原始拷贝:
rsync -rvl /opt/wdp root@node103:/opt/
(2)期望脚本:
xsync 要同步的文件名称
(3)在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行,需要制定路径。
2)操作示例:
(1)在/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=11; host<12; host++)); do
#echo p d i r / pdir/ pdir/fname u s e r @ q d user@qd user@qdhost: p d i r e c h o − − − − − − − − − − − − − − − h a d o o p pdir echo --------------- hadoop pdirechohadoophost ----------------
rsync -rvl p d i r / pdir/ pdir/fname u s e r @ q d user@qd user@qdhost:$pdir
done
xsync /opt/wdp
rsync -rvl p d i r / pdir/ pdir/fname u s e r @ q d user@qd user@qdhost:$pdir
rsync -rvl 11.txt hadoop@hrbu21:/home/hadoop/
(2)修改脚本 xsync 具有执行权限
[root@node102 bin]# chmod a+x xsync
安装 yum install -y rsync 每台机器都按
(3)调用脚本形式:xsync 文件名称

编写集群指令分发工具脚本xcall
1)应用场景:在所有主机上同时执行相同的命令
xcall +命令
2)具体实现
(1)在/usr/local/bin目录下创建xcall文件,文件内容如下:
#!/bin/bash
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi

echo -------------localhost----------
@ f o r ( ( h o s t = 101 ; h o s t < = 105 ; h o s t + + ) ) ; d o e c h o − − − − − − − − − − h a d o o p @ for((host=101; host<=105; host++)); do echo ----------hadoop @for((host=101;host<=105;host++));doechohadoophost---------
ssh hadoop$host $@
done
(2)修改脚本 xcall 具有执行权限
[root@node102 bin]# chmod a+x xcall

(3)调用脚本形式: xcall 操作命令
[root@node102 ~]# xcall rm -rf /opt/tmp/profile
(4)添加JPS命令
cd /usr/bin #切换到/usr/bin 目录下
ln -s -f /opt/wdp/jdk/bin/jps jps
xcall jps

配置集群
1)集群部署规划
在这里插入图片描述
2)配置文件
(1)core-site.xml

<property>
	<name>fs.defaultFS</name>
    <value>hdfs://qd10:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/wdp/hadoop/data/tmp</value>
</property>
(2)Hdfs
	hadoop-env.sh

export JAVA_HOME=/opt/wdp/jdk1.8.0_172
hdfs-site.xml


dfs.replication
3


dfs.namenode.secondary.http-address
node104:50090


slaves
node102
node103
node104
(3)yarn
yarn-env.sh
export JAVA_HOME=/opt/wdp/jdk1.8.0_172
yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node103</value>
</property>
</configuration>
(4)mapreduce
	mapred-env.sh

export JAVA_HOME=/opt/wdp/jdk1.8.0_172
mapred-site.xml

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
</configuration>

3)在集群上分发以上所有文件
cd /opt/wdp/hadoop-2.7.6/etc/hadoop
xsync /opt/wdp/hadoop-2.7.6/etc/hadoop/core-site.xml
xsync /opt/wdp/hadoop-2.7.6/etc/hadoop/yarn-site.xml
xsync /opt/wdp/hadoop-2.7.6/etc/hadoop/slaves
4)查看文件分发情况
xcall cat /opt/wdp/hadoop-2.7.6/etc/hadoop/slaves

集群启动及测试
1)启动集群
(0)如果集群是第一次启动,需要格式化namenode
[root@node102 hadoop-2.7.6]# bin/hdfs namenode -format
(1)启动HDFS:
[root@node102 hadoop-2.7.6]# sbin/start-dfs.sh
[root@node102 hadoop-2.7.6]# jps
4166 NameNode
4482 Jps
4263 DataNode

[root@node103 桌面]# jps
3218 DataNode
3288 Jps

[root@node104 桌面]# jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
(2)启动yarn
sbin/start-yarn.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
2)集群基本测试
(1)上传文件到集群
上传小文件
bin/hdfs dfs -mkdir -p /user/hadoop/tmp/conf
bin/hdfs dfs -put etc/hadoop/*-site.xml /user/hadoop/tmp/conf
上传大文件
[hadoop@node102 hadoop-2.7.6]$ bin/hadoop fs -put /opt/soft/hadoop-2.7.6.tar.gz /user/hadoop/input
(2)上传文件后查看文件存放在什么位置
文件存储路径
[hadoop@node102 subdir0]$ pwd
/opt/wdp/hadoop-2.7.6/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0
查看文件内容
[hadoop@node102 subdir0]$ cat blk_1073741825
hadoop
hadoop
hadoop
(3)拼接
-rw-rw-r–. 1 hadoop hadoop 134217728 5月 23 16:01 blk_1073741836
-rw-rw-r–. 1 hadoop hadoop 1048583 5月 23 16:01 blk_1073741836_1012.meta
-rw-rw-r–. 1 hadoop hadoop 63439959 5月 23 16:01 blk_1073741837
-rw-rw-r–. 1 hadoop hadoop 495635 5月 23 16:01 blk_1073741837_1013.meta
[hadoop@node102 subdir0]$ cat blk_1073741836>>tmp.file
[hadoop@node102 subdir0]$ cat blk_1073741837>>tmp.file
[hadoop@node102 subdir0]$ tar -zxvf tmp.file
(4)下载
[hadoop@node102 hadoop-2.7.6]$ bin/hadoop fs -get /user/hadoop/input/hadoop-2.7.6.tar.gz
3)性能测试集群
写海量数据
读海量数据

配置集群常见问题
1)防火墙没关闭、或者没有启动yarn
INFO client.RMProxy: Connecting to ResourceManager at node108/192.168.10.108:8032
2)主机名称配置错误
3)ip地址配置错误
4)ssh没有配置好
5)root用户和hadoop两个用户启动集群不统一
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 node108/192.168.10.108:8032
8)datanode不被namenode识别问题(datanode和namenode进程同时只能工作一个)
Namenode在format初始化的时候会形成两个标识,blockPoolId和clusterId。新的datanode加入时,会获取这两个标识作为自己工作目录中的标识。
一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然持有原来的id,就不会被namenode识别。
解决办法,删除datanode节点中的数据后,再次重新格式化namenode。

9)不识别主机名称
java.net.UnknownHostException: node102: node102
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 node102
(2)主机名称不要起hadoop hadoop000等特殊名称
10)jps发现进程已经没有,但是重新启动集群,提示进程已经开启。原因是在linux的根目录下/tmp目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。
11)Caused by: java.net.BindException: Problem binding to [xxx:8031] java.net.BindException: 地址已在使用; For more details see: http://wiki.apache.org/hadoop/BindException

Hadoop的几点延伸
Hadoop启动停止方式总结
1)各个服务组件逐一启动
(1)分别启动hdfs组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2)各个模块分开启动(配置ssh是前提)常用
(1)整体启动/停止hdfs
start-dfs.sh
stop-dfs.sh
(2)整体启动/停止yarn
start-yarn.sh
stop-yarn.sh
3)全部启动(不建议使用)
start-all.sh
stop-all.sh

Hadoop配置文件介绍
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:存放在hadoop相应的jar包中
[core-default.xml]
hadoop-common-2.7.6.jar/ core-default.xml
[hdfs-default.xml]
hadoop-hdfs-2.7.6.jar/ hdfs-default.xml
[yarn-default.xml]
hadoop-yarn-common-2.7.6.jar/ yarn-default.xml
[core-default.xml]
hadoop-mapreduce-client-core-2.7.6.jar/ core-default.xml
(2)自定义配置文件:存放在$HADOOP_HOME/etc/hadoop
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

修改本地临时文件存储目录
1)停止进程
[hadoop@node101 hadoop-2.7.6]$ sbin/yarn-daemon.sh stop nodemanager
[hadoop@node101 hadoop-2.7.6]$ sbin/yarn-daemon.sh stop resourcemanager
[hadoop@node101 hadoop-2.7.6]$ sbin/hadoop-daemon.sh stop datanode
[hadoop@node101 hadoop-2.7.6]$ sbin/hadoop-daemon.sh stop namenode
2)修改hadoop.tmp.dir
[core-site.xml]


hadoop.tmp.dir
/opt/wdp/hadoop-2.7.6/data/tmp

3)格式化NameNode
[hadoop@node101 hadoop-2.7.6]$ hadoop namenode -format
4)启动所有进程
[hadoop@node101 hadoop-2.7.6]$ sbin/hadoop-daemon.sh start namenode
[hadoop@node101 hadoop-2.7.6]$ sbin/hadoop-daemon.sh start datanode
[hadoop@node101 hadoop-2.7.6]$ sbin/yarn-daemon.sh start resourcemanager
[hadoop@node101 hadoop-2.7.6]$ sbin/yarn-daemon.sh start nodemanager
5)查看/opt/wdp/hadoop-2.7.6/data/tmp这个目录下的内容。

集群时间同步问题设置
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每日十分钟,同步一次时间。
配置时间同步:
1)时间服务器配置
(1)检查ntp是否安装
[root@node102 桌面]# rpm -qa|grep ntp
ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.6p5-10.el6.centos.x86_64
(2)修改ntp配置文件
vi /etc/ntp.conf
修改内容如下
在这里插入图片描述
3)修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
增加内容如下
SYNC_HWCLOCK=yes
4)重新启动ntpd
[root@node102 桌面]# service ntpd status
ntpd 已停
[root@node102 桌面]# service ntpd start
正在启动 ntpd: [确定]
5)执行:
chkconfig ntpd on
2)其他机器配置(必须root用户)
(1)在其他机器配置每1小时与时间服务器同步一次
[root@node103 hadoop-2.7.6]# crontab -e
编写脚本
* */1 * * * /usr/sbin/ntpdate node102
(2)修改任意机器时间
date -s “2018-3-15”
(3)1小时后查看机器是否与时间服务器同步
date

编辑不易,点个赞,收藏一下吧!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值