hadoop的配置
检查是否拥有jdk
- 检查Java版本
java -version
- 从主机往虚拟机传送文件
yum -y install lrzsz #下载插件
rz #打开文件传输的图形可视化界面,把要传的文件拖进去
- 创建一个文件夹放jdk hadoop
解压
tar -xvxf jdk-8u251-linux-x64.tar.gz
- 修改配置
[root@hadoop02 etc]
vim profile
#java environmenti
export JAVA_HOME=/softjava/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 检查
source /etc/profile #让其生效
[root@hadoop02 etc]
java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
- 查看jdk路径
[root@hadoop02 /]
which java
hadoop的安装
- 解压hadoop安装包
- 将hadoop添加到环境
[root@hadoop02 /]
vim etc/profile
export HADOOP_HOME=/softjava/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使其生效并且检查
source/etc/profile 使文件生效
[root@hadoop02 hadoop-2.7.1]# hadoop version
Hadoop 2.7.1
reboot 重启
- hadoop目录
[root@hadoop02 hadoop-2.7.1]# ll
总用量 68
drwxr-xrwx. 2 10021 10021 4096 6月 29 2015 bin
-rw-r--r--. 1 root root 0 9月 17 23:27 core-site.xml
drwxr-xrwx. 3 10021 10021 4096 9月 18 19:40 etc
drwxr-xrwx. 2 10021 10021 4096 6月 29 2015 include
drwxr-xr-x. 2 root root 4096 9月 12 00:49 input
drwxr-xrwx. 3 10021 10021 4096 6月 29 2015 lib
drwxr-xrwx. 2 10021 10021 4096 6月 29 2015 libexec
-rw-rw-rw-. 1 10021 10021 15429 6月 29 2015 LICENSE.txt
drwxr-xr-x. 3 root root 4096 9月 18 18:01 logs
-rw-rw-rw-. 1 10021 10021 101 6月 29 2015 NOTICE.txt
-rw-rw-rw-. 1 10021 10021 1366 6月 29 2015 README.txt
drwxr-xrwx. 2 10021 10021 4096 6月 29 2015 sbin
drwxr-xrwx. 4 10021 10021 4096 6月 29 2015 share
drwxr-xr-x. 4 root root 4096 9月 18 17:33 tmp
drwxr-xr-x. 2 root root 4096 9月 15 17:59 wcinput
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
hadoo配置文件
1. 配置hadoop-env.sh
[root@hadoop02 hadoop-2.7.1]# vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/softjava/jdk1.8
export HADOOP_CONF_DIR=/softjava/hadoop-2.7.1/etc/hadoop
2. 配置core-site.xml
[root@hadoop02 hadoop-2.7.1]# vim etc/hadoop/core-site.xml
<!--指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>y
<value>hdfs://hadoop02:9000</value>
</property>
<!--指定Hadoop运行时产生文件的存储目录 datanode-->
<property>
<name>hadoop.tmp.dir</name>
<value>/softjava/hadoop-2.7.1/tmp</value>
</property>
3. 配置hdfs-site.xml
vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<!--副本数-->
</property>
<property>
<name>dfs.namenode.http.address</name>
<value>slave1:50070</value>
</property>
<!--指定Hadoop辅助名称节点主机配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop04:50090</value>
</property>
4. 配置yarn-env.sh
vim etc/hadoop/yarn-env.sh
# some Java parameters
export JAVA_HOME=/softjava/jdk1.8
5. 配置yarn-site.xml
vim etc/hadoop/yarn-site.xml
<!--指定YARN的ResourceManager的地址,单节点启动value为本机主机名,此处为集群-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<!--Reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>
6. 配置mapred-env.sh
vim etc/hadoop/mapred-env.sh
export JAVA_HOME=/softjava/jdk1.8
7.配置mapred-site.xml
vim etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--历史服务器端地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!--历史服务器web端地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
完全分布式启动
scp(securce copy) 安全拷贝
scp可以实现服务器之间的数据拷贝
[root@hadoop01 ~]#
scp -r wuhan root@hadoop02:/wh
注意:
如果出现 ssh: Could not resolve hostname hadoop02: Temporary failure in name resolution lost connection
查看 etc/hosts 中的主机名与ip是否一致
从Hadoop02把数据推到04
[root@hadoop02 etc]# scp -r hosts root@hadoop04:/etc/hosts
从hadoop03把02的数据拿过来
[root@hadoop03 etc]# scp -r root@hadoop02:/etc/hosts ./
乾坤大挪移:在hadoop03中把02的东西弄到01
[root@hadoop03 etc]# scp -r root@hadoop02:/etc/hosts root@hadoop01:/etc/hosts
rsync 远程同步工具
Rsync 主要用于备份和镜像,具有速度快,避免复制相同内容和支持符号链接的优点
Rsync与scp的区别:用rsync做文件复制要比scp快,rsync只对差异文件做更新。Scp是吧所有的都复制过去
[root@hadoop02 /]# rsync -rvl wh root@hadoop03:/wh
xsync集群分发脚本
需求:循环复制文件到所有节点的相同目录下 (如果某一个文件修改了,其他机器中的这个文件也需要修改,那么do it)
创建:在用户目录下创建bin目录在bin目录中创建xsync然后
#!/bin/bash
#1获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));then
echonoargs;
exit;
fi
#2获取文件名称
p1=$1
fname=`basename$p1`
echofname=$fname
#3获取上级目录到绝对路径
pdir=`cd-P$(dirname$p1);pwd`
echopdir=$pdir
#4获取当前用户名称
user=`whoami`
#5循环
for((host=103;host<105;host++));do
echo-------------------hadoop$host--------------
rsync-rvl$pdir/$fname$user@hadoop$host:$pdir
done
(b)修改脚本xsync具有执行权限
chmod 777 xsync
(c)调用脚本形式:xsync文件名称
xsync /home/atguigu/bin
集群部署规划及单点启动
规划
单点启动
- 格式化namenode 02, 03 , 04
注意:为什么不能一直格式化namenode
格式化namenode会产生新的clusterID导致datanode的clusterID与namenode的不一样
因为datanode的clusterID是他第一次启动的时候从namenode获取的,所以会导致集群找不到数据,所以格式化namenode是一定要先删除data的数据和logs的日志,然后再格式化namenode
[root@hadoop04 hadoop-2.7.1]# rm -rf tmp/dfs/data/ logs/
[root@hadoop02 hadoop-2.7.1]# bin/hdfs namenode -format
[root@hadoop01 hadoop-2.7.1]# sbin/hadoop-daemon.sh start namenode
[root@hadoop01 hadoop-2.7.1]# sbin/hadoop-daemon.sh start datanode
[root@hadoop01 hadoop-2.7.1]# sbin/yarn-daemon.sh start resourcemanager
[root@hadoop01 hadoop-2.7.1]# sbin/yarn-daemon.sh start nodemanager
02
[root@hadoop02 hadoop-2.7.1]# jps
4672 NameNode
4796 Jps
4764 DataNode
03
[root@hadoop03 hadoop-2.7.1]# jps
4434 DataNode
4466 Jps
04
[root@hadoop04 hadoop-2.7.1]# jps
4949 DataNode 4985 Jps
集群ssh配置
生成公钥和密钥
[root@hadoop02 ~]# cd .ssh/
[root@hadoop02 .ssh]# ssh-keygen -t rsa
将公钥拷贝到要免密的服务器上 ,第一次需要输密码
[root@hadoop02 .ssh]# ssh-copy-id hadoop02 自己也拷贝一下
[root@hadoop02 .ssh]# ssh-copy-id hadoop03
[root@hadoop02 .ssh]# ssh-copy-id hadoop04
在hadoop03上再来一遍,因为03上的resourcemanager需要操控namenode
集群群起
格式化namenode
[root@hadoop02 hadoop-2.7.1]# rm -rf tmp/ logs/
[root@hadoop02 hadoop-2.7.1]# bin/hdfs namenode -format
启动hdfs
[root@hadoop02 hadoop-2.7.1]# sbin/start-dfs.sh
如果datanode没有启动或者启动后关闭那么大概率是clusterID的错误
https://blog.csdn.net/u014695188/article/details/54913361?biz_id=102&utm_term=sbinstart-dfs.sh%20%20%20datanode%E5%90%AF%E5%8A%A8%E5%90%8E&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-54913361&spm=1018.2118.3001.4187
启动yarn
[root@hadoop03 hadoop-2.7.1]# sbin/start-yarn.sh
在hadoop03中启动
因为你的resourcemanager在03
集群文件路径
上传文件命令
bin/hdfs dfs -put 上传文件路径 传到集群中路径
Pwd 查看路径
上传集群文件在系统中的位置
/softjava/hadoop-2.7.1/tmp/dfs/data/current/BP-796766913-192.168.121.132-1600421127808/current/finalized/subdir0/subdir0