Hadoop伪分布式模式
Hadoop2.x:
官网:hadoop.apache.org
三个组件:
HDFS:分布式文件系统,存储
MapReduce:分布式计算
Yarn:资源(cpu + memory)和JOB调度监控
文档地址:
http://hadoop.apache.org/docs/r2.8.2/
部署方式:
1.单机模式(Standalone):1个Java进程
2.伪分布模式(Pseudo-Distribute Mode):开发|学习 多个Java进程
3.集群模式(Cluster Mode):生产 多态机器多个Java进程
http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-common/SingleCluster.html
伪分布式部署:HDFS
1.创建hadoop服务的一个用户
# useradd hadoop
# id hadoop
# vi /etc/sudoers
hadoop ALL=(root) NOPASSWD:ALL
2.部署Java
使用:Oracle jdk1.8
尽力不要使用: Open JDk
2.1、解压+环境变量
2.2、CDH课 /usr/java
最好:which java
3.部署ssh,确保其是运行的
查看:默认是已经安装
service sshd status
4.解压hadoop
解压:
software]# tar -zxvf hadoop-2.8.1.tar.gz
软连接:
software]# ln -s /opt/software/hadoop-2.8.1 hadoop
修改用户和用户组:
software]# chown -R hadoop:hadoop hadoop
修改软连接
software]# chown -R hadoop:hadoop hadoop/*
修改软连接文件夹里面的内容
software]# chown -R hadoop:hadoop hadoop-2.8.1
修改原文件夹
chown -R hadoop:hadoop 文件夹:修改文件夹和文件夹里面的内容
chown -R hadoop:hadoop 软连接文件夹:修改软连接文件夹,不会修改软连接文件夹里面的
chown -R hadoop:hadoop 软连接文件夹/*:软连接文件夹不修改,只修改软连接文件夹里面的
software]# cd hadoop
hadoop]# rm -rf *.txt
hadoop]# ll
bin:命令
etc:配置文件
lib:lib包
sbin:启动和关闭hadoop里面的组件(进程)
5.切换hadoop用户和配置
进入hadoop用户:
~]# su -hadoop
进入hadoop文件夹:
~]$ cd /opt/software/hadoop
hadoop]$ cd /etc/hadoop
hadoop]$ ll
hadoop-env.sh:hadoop配合环境
core-site.xml:hadoop 核心配置文件
hdfs-site.xml:针对于hdfs服务的 -->会起进程
[mapred-site.xml:MapReduce计算所需要的配置文件] 只当在jar计算时才有
yarn-site.xml:yarn服务的 -->会起进程
slaves:集群的机器名称
hadoop]$ vi core-site.xml
fs.defaultFS
hdfs://localhost:9000
hadoop]$ vi hdfs-site.xml
dfs.replication
1
6.配置hadoop用户的ssh的信任关系
~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
~]$ chmod 0600 ~/.ssh/authorized_keys
.ssh]$ ssh 机器名 date
第一次输入需要yes
.ssh]$ ssh 机器名 date
第二次输入不需要yes
7.格式化
hadoop]$ bin/hdfs namenode -format
Storage directory: /tmp/hadoop-hadoop/dfs/name
1.默认的存储路径哪个参数配置?
2.hadoop-hadoop指的是什么意思?
core-site.xml
hadoop.tmp.dir:/tmp/hadoop-${user.name}
hdfs-site.xml
dfs.namenode.name.dir : file://${hadoop.tmp.dir}/dfs/name
8.启动HDFS服务
删除不需要的cmd:
sbin]$ rm -rf *.cmd
启动dfs:
sbin]$ ./start-dfs.sh
namenode(名称节点) : localhost
datanode(数据节点) : localhost:
secondary namenode(第二名称节点) : 0.0.0.0
http://localhost:50070/
默认的端口:50070
web: localhost:9000
查看进程是否启动:
sbin]$ ps -ef | grep hadoop
问题:
发现JAVA_HOME变量是存在的,无法启动HDFS服务
无法找到JAVA_HOME:
etc/hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_45
之后再重新启动dfs
9.使用命令(hadoop、hdfs)
在hdfs上创建user文件夹:
bin]$ ./hdfs dfs -mkdir /user
在hdfs上创建hadoop文件夹:
bin]$ ./hdfs dfs -mkdir /user/hadoop
创建本地log文件:
bin]$ echo "123456" > rz.log
上传本地文件到hdfs:
bin]$ ./hadoop fs -put rz.log hdfs://localhost:9000/
查看hdfs里面的文件:
bin]$ ./hadoop fs -ls hdfs://localhost:9000/
或者
bin]$ ./hadoop fs -ls /
10.想要修改hdfs://localhost:9000为hdfs://IP地址:9000
停止hdfs服务:
bin]$ ../sbin/stop-dfs.sh
修改配置文件:
bin]$ vi ../etc/hadoop/core-site.xml
fs.defaultFS
hdfs://192.168.137.201:9000
重新格式化:
bin]$ ./hdfs namenode -format
启动hdfs服务:
bin]$ ../sbin/start-dfs.sh
namenode(名称节点) : 主机名(admin)
datanode(数据节点) : localhost:
secondary namenode(第二名称节点) : 0.0.0.0
查看端口文件是否启动:
bin]$ netstat -nlp|grep 9000
11.修改HDFS的服务以主机名(admin)启动
针对于datanode修改:
hadoop]$ vi slaves
admin(主机名)
针对于secondarynamenode修改:
hadoop]$ vi hdfs-site.xml
dfs.replication
1
dfs.namenode.secondary.http-address
admin(主机名):50090
dfs.namenode.secondary.https-address
admin(主机名):50091
切换到sbin:
hadoop]$ cd ../../sbin
停止hdfs:
sbin]$ ./stop-dfs.sh
启动hdfs:
sbin]$ ./start-dfs.sh
12.Yarn部署
MapReduce + Yarn
部署Yarn:
ResourceManager
NodeManager
拷贝配置文件:
hadoop]# cp mapred-site.xml.template mapred-site.xml
修改配置文件:
hadoop]# vi mapred-site.xml
mapreduce.framework.name
yarn
配置yarn文件:
hadoop]# vi yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
修改权限:
hadoop]# chown hadoop:hadoop *
切换用户:
hadoop]# su - hadoop
进入hadoop:
~]$ cd /opt/software/hadoop
启动yarn服务:
hadoop]$ sbin/start-yarn.sh
web界面: http://192.168.137.201:8088/
13.MR Job测试
MapReduce: java代码写的,map(映射)函数和reduce(归约)函数
查找jar包:
hadoop]$ find ./ -name "*example*"
执行任务:
hadoop]$ bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 5 10
如何在yarn的web界面查看application(应用|job)日志?
如何使用rundeck调度2的测试案例?
1.root shell脚本
2.在1步骤的shell脚本:
su - hadoop -c "/opt/software/hadoop/bin/hadoop jar /opt/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 5 10"
14.停止yarn
sbin]$ ./stop-yarn.sh
补充:
1.配置root用户的ssh的信任关系
当我们第一次执行:ssh localhost date时是需要输入yes和密码,之后会在.ssh下生成一个名字为known_hosts的文件。
如果.ssh下面存在known_hosts文件,则再次输入的时候不用输入yes。
使用ssh的时候不输入密码:
# ssh-keygen
之后一直回车,会生成id_rsa.pub和id_rsa两个文件
id_rsa:私钥
id_rsa.pub:公钥
.ssh]# cat id_rsa.pub > authorized_keys
.ssh]# ssh 机器名 date
2.某个服务数据目录在A盘(500G),还剩10G,/a/dfs/data
添加B盘2T.
1.A盘:mv /a/dfs /b/
2.B盘:ln -s /b/dfs /a/
现在A盘存在的是软连接之后的文件夹,所有A盘的服务都是可以正常启动的,但是最后的数据都是存在B盘的dfs,A盘的只是一个假象
3.检查(修改)A,B盘的文件夹的用户和用户组的权限
3.查看网页内容
curl http://localhost:50070
疑问:
1.多个机器的HDFS的数据目录,数据不均衡,怎么办?
2.一台机器的多个磁盘数据不均衡,怎么办?
作业:
1.hadoop官网
http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-common/SingleCluster.html
http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
2.hadoop部署---hdfs
3.将10,11做一下
4.拓展
hadoop001(第一台虚拟机) hadoop002(第二台虚拟机)配置互相信任关系,说白了,不需要输入密码,进入对方执行命令
http://blog.itpub.net/30089851/viewspace-1992210/
解决方案;
hadoop002(虚拟机2):
scp id_rsa.pub hadoop001:/root/.ssh/id_rsa.pub002
hadoop001(虚拟机1):
cat /root/.ssh/id_rsa.pub002 >> /root/.ssh/authorized_keys
【来自@若泽大数据】