一、安装和配置hadoop
1.准备工作
(*)安装Linux和JDK hadoop111
(*)设置主机名和ip关系 vi /etc/hosts 添加 IP 主机名
修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop
(*)关闭防火墙 service iptables status service iptables stop
2.安装模式
解压:tar -zcvf hadoop-2.4.1.tar.gz -C ~/training/
设置环境变量:vi ~/.bash_profile
HADOOP_HOME=/root/training/hadoop-2.4.1
export HADOOP_HOME
把hdfs的bin和sbin命令加入到环境变量中 全部直接使用hdfs命令
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
执行:source~/.bash_profile 命令使配置的环境变量生效
(1)本地模式
(*)不具备 HDFS 的功能,所有数据存在 Linux 上
(*)只能测试 MapReduce 程序
(*)vihadoop-env.sh 28exportJAVA_HOME=/root/training/jdk1.7.0_75
(*)Demo:wordcount hadoopjarhadoop-mapreduce-examples-2.4.1.jar
wordcount /root/data/input/data.txt /root/data/output/wc1
(2)伪分布模式
(*)具备 Hadoop 的所有功能:HDFS 和 Yarn
(*)在单机上模拟分布式的环境
(*)开发和测试
(1)hdfs-site.xml:暂时不改权限(就是是否需要密码登录)
<!--数据块的冗余度 replication 水平赋值-->
<property>
<name>dfs.replication</name>
<!--NameNode的地址-->
<!--9000是RPC通信端口号-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.12.111:9000</value>
</property>
<!--HDSF数据,日志和元信息的保存目录 默认是Linux的tmp的目录 目录必须存在-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-2.4.1/tmp</value>
</property>
(3)cp mapred-site.xml.template mapred-site.xml
<!--mapreduce的运行平台-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(4)yarn-site.xml<!--Yarn的主节点-->
<property><name>yarn.resourcemanager.hostname</name><value>192.168.12.112</value></property>
<!--mapreduce处理数据的方式--> shuffle 洗牌
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
(*)对 HDFS 进行格式化 hdfs namenode -format 或者hadoop namenode -format
日志:17/05/2500:52:13INFOcommon.Storage:Storagedirectory/root/training/hadoop-2.4.1/tmp/dfs/namehasbeensuccessfullyformatted
(*)启动 hadoop 集群: start-all.sh start-dfs.sh start-yarn.sh
进程:jps
10258DataNode
10817NodeManager
10532ResourceManager
10401SecondaryNameNode
10138NameNode
(3)全分布模式(3 台)
(4)配置免密码登陆
(*)产生密钥对
ssh-keygen -t rsa (算法)
日志:
Youridentificationhasbeensavedin/root/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.
(*)把自己的公钥给别人 ssh-copy-id -i .ssh/id_rsa.pub root@hadoop111
(*)Demo:免密码登录
五、操作 HDFS:
1、WebConsole
管理员 NameNode: http://192.168.88.111:50070
SecondaryNameNode 网页:监控日志的合并信息 http://192.168.88.111:50090
2、命令行
(1)操作命令 -mkdir:创建目录
(*)hdfsdfs-mkdir/tools
(*)hdfsdfs-mkdir/parent/child
-ls 查看目录的文件
-ls-R 包含子目录
(*)hdfsdfs-ls/
(*)hdfsdfs-lsr/
上传数据 -put -copyFromLocal
-moveFromLocal: 相当于 ctrl+x
(*) 举例:上传一个大于 128M 的文件 hdfsdfs-puthadoop-2.4.1.tar.gz/tools/
(*) 检查数据块:
/root/training/hadoop-2.4.1/tmp/dfs/data/current/BP-416130860-192.168.88.1111495644733075/current/finalized
下载数据 -copyToLocal -get
(*)举例:hdfsdfs-get
-rm: 删除一个空目录
-rmr: 删除一个目录和子目录 hdfsdfs-rmr/tools/hadoop-2.4.1.tar.gz
日志:Deleted/tools/hadoop-2.4.1.tar.gz
(问题):如果启用回收站,日志???? -----> 本质??
-getmerge: 将目录下所有文件合并后,再下载
hdfsdfs-mkdir/students
hdfsdfs-putstudent0*.txt/students
hdfsdfs-getmerge/students~/a.txt
-cp: 拷贝:hdfsdfs-cp/students/student03.txt/students/student04.txt
-mv:移动
-count [root@hadoop111~]#hdfsdfs-count/students 1 4 49/students
-du:每个文件的大小[root@hadoop111~]#hdfsdfs-du/students
19 /students/student01.txt
10 /students/student02.txt
10 /students/student03.txt
10 /students/student04.txt
-text、-cat: 查看文件内容
hdfsdfs-cat/students/student01.txt
balancer
(2)管理命令:hdfsdfsadmin******
-report 显示文件系统的基本数据 hdfsdfsadmin -report
-safemode HDFS 的安全模式命令 <enter|leave|get|wait>
举例:hdfsdfsadmin-safemodeenter|leave|get|wait
(*)安全模式是只读
[root@hadoop111~]#hdfs dfsadmin -safemode get
SafemodeisOFF
[root@hadoop111~]#hdfs dfsadmin -safemode enter
SafemodeisON
[root@hadoop111~]#hdfs dfs -mkdir/aaa
mkdir:Cannotcreatedirectory/aaa.Namenodeisinsafe mode.
[root@hadoop111~]#hdfs dfsadmin -safemode leave
SafemodeisOFF
[root@hadoop111~]#
(3)其他操作命令:
[-chmod[-R]<MODE[,MODE]...|OCTALMODE>PATH...] 权限
创建删除快照:snapshot
[-createSnapshot<snapshotDir>[<snapshotName>]]
[-deleteSnapshot<snapshotDir><snapshotName>]
[-renameSnapshot<snapshotDir><oldName> <newName>]
清空 HDFS 回收站
[-expunge]
(4)其他的管理命令 开启和禁用快照
[-allowSnapshot<snapshotDir>]
[-disallowSnapshot<snapshotDir>]
设置 HDFS 目录的配额(quota):
[-setQuota<quota><dirname>...<dirname>]
[-clrQuota<dirname>...<dirname>]
[-setSpaceQuota<quota><dirname>...<dirname>]
[-clrSpaceQuota<dirname>...<dirname>]
3、JavaAPI
(*)jar 包:
/root/training/hadoop-2.4.1/share/hadoop/common
/root/training/hadoop-2.4.1/share/hadoop/common/lib
/root/training/hadoop-2.4.1/share/hadoop/hdfs
/root/training/hadoop-2.4.1/share/hadoop/hdfs/lib
(*)创建目录: hdfsdfs-mkdir/tools
HDFS 的权限检查:功能非常弱 你说你是谁,你就谁
当前用户 同组用户 其他人
根目录的权限:inode="/":root:supergroup:d rwx r-x r-x
PATH=$PATH:$HOME/bin
export PATH
JAVA_HOME=/root/training/jdk1.7.0_75
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
HADOOP_HOME=/root/training/hadoop-2.4.1
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
1.准备工作
(*)安装Linux和JDK hadoop111
(*)设置主机名和ip关系 vi /etc/hosts 添加 IP 主机名
修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop
(*)关闭防火墙 service iptables status service iptables stop
2.安装模式
解压:tar -zcvf hadoop-2.4.1.tar.gz -C ~/training/
设置环境变量:vi ~/.bash_profile
HADOOP_HOME=/root/training/hadoop-2.4.1
export HADOOP_HOME
把hdfs的bin和sbin命令加入到环境变量中 全部直接使用hdfs命令
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
执行:source~/.bash_profile 命令使配置的环境变量生效
(1)本地模式
(*)不具备 HDFS 的功能,所有数据存在 Linux 上
(*)只能测试 MapReduce 程序
(*)vihadoop-env.sh 28exportJAVA_HOME=/root/training/jdk1.7.0_75
(*)Demo:wordcount hadoopjarhadoop-mapreduce-examples-2.4.1.jar
wordcount /root/data/input/data.txt /root/data/output/wc1
(2)伪分布模式
(*)具备 Hadoop 的所有功能:HDFS 和 Yarn
(*)在单机上模拟分布式的环境
(*)开发和测试
(1)hdfs-site.xml:暂时不改权限(就是是否需要密码登录)
<!--数据块的冗余度 replication 水平赋值-->
<property>
<name>dfs.replication</name>
<value>1</value>
<description>数据块的冗余度 replication 水平赋值</description>
</property>
<!--是否开启权限验证-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--NameNode的地址-->
<!--9000是RPC通信端口号-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.12.111:9000</value>
</property>
<!--HDSF数据,日志和元信息的保存目录 默认是Linux的tmp的目录 目录必须存在-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-2.4.1/tmp</value>
</property>
(3)cp mapred-site.xml.template mapred-site.xml
<!--mapreduce的运行平台-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(4)yarn-site.xml<!--Yarn的主节点-->
<property><name>yarn.resourcemanager.hostname</name><value>192.168.12.112</value></property>
<!--mapreduce处理数据的方式--> shuffle 洗牌
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
(*)对 HDFS 进行格式化 hdfs namenode -format 或者hadoop namenode -format
日志:17/05/2500:52:13INFOcommon.Storage:Storagedirectory/root/training/hadoop-2.4.1/tmp/dfs/namehasbeensuccessfullyformatted
(*)启动 hadoop 集群: start-all.sh start-dfs.sh start-yarn.sh
进程:jps
10258DataNode
10817NodeManager
10532ResourceManager
10401SecondaryNameNode
10138NameNode
(3)全分布模式(3 台)
(4)配置免密码登陆
(*)产生密钥对
ssh-keygen -t rsa (算法)
日志:
Youridentificationhasbeensavedin/root/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.
(*)把自己的公钥给别人 ssh-copy-id -i .ssh/id_rsa.pub root@hadoop111
(*)Demo:免密码登录
五、操作 HDFS:
1、WebConsole
管理员 NameNode: http://192.168.88.111:50070
SecondaryNameNode 网页:监控日志的合并信息 http://192.168.88.111:50090
2、命令行
(1)操作命令 -mkdir:创建目录
(*)hdfsdfs-mkdir/tools
(*)hdfsdfs-mkdir/parent/child
-ls 查看目录的文件
-ls-R 包含子目录
(*)hdfsdfs-ls/
(*)hdfsdfs-lsr/
上传数据 -put -copyFromLocal
-moveFromLocal: 相当于 ctrl+x
(*) 举例:上传一个大于 128M 的文件 hdfsdfs-puthadoop-2.4.1.tar.gz/tools/
(*) 检查数据块:
/root/training/hadoop-2.4.1/tmp/dfs/data/current/BP-416130860-192.168.88.1111495644733075/current/finalized
下载数据 -copyToLocal -get
(*)举例:hdfsdfs-get
-rm: 删除一个空目录
-rmr: 删除一个目录和子目录 hdfsdfs-rmr/tools/hadoop-2.4.1.tar.gz
日志:Deleted/tools/hadoop-2.4.1.tar.gz
(问题):如果启用回收站,日志???? -----> 本质??
-getmerge: 将目录下所有文件合并后,再下载
hdfsdfs-mkdir/students
hdfsdfs-putstudent0*.txt/students
hdfsdfs-getmerge/students~/a.txt
-cp: 拷贝:hdfsdfs-cp/students/student03.txt/students/student04.txt
-mv:移动
-count [root@hadoop111~]#hdfsdfs-count/students 1 4 49/students
-du:每个文件的大小[root@hadoop111~]#hdfsdfs-du/students
19 /students/student01.txt
10 /students/student02.txt
10 /students/student03.txt
10 /students/student04.txt
-text、-cat: 查看文件内容
hdfsdfs-cat/students/student01.txt
balancer
(2)管理命令:hdfsdfsadmin******
-report 显示文件系统的基本数据 hdfsdfsadmin -report
-safemode HDFS 的安全模式命令 <enter|leave|get|wait>
举例:hdfsdfsadmin-safemodeenter|leave|get|wait
(*)安全模式是只读
[root@hadoop111~]#hdfs dfsadmin -safemode get
SafemodeisOFF
[root@hadoop111~]#hdfs dfsadmin -safemode enter
SafemodeisON
[root@hadoop111~]#hdfs dfs -mkdir/aaa
mkdir:Cannotcreatedirectory/aaa.Namenodeisinsafe mode.
[root@hadoop111~]#hdfs dfsadmin -safemode leave
SafemodeisOFF
[root@hadoop111~]#
(3)其他操作命令:
[-chmod[-R]<MODE[,MODE]...|OCTALMODE>PATH...] 权限
创建删除快照:snapshot
[-createSnapshot<snapshotDir>[<snapshotName>]]
[-deleteSnapshot<snapshotDir><snapshotName>]
[-renameSnapshot<snapshotDir><oldName> <newName>]
清空 HDFS 回收站
[-expunge]
(4)其他的管理命令 开启和禁用快照
[-allowSnapshot<snapshotDir>]
[-disallowSnapshot<snapshotDir>]
设置 HDFS 目录的配额(quota):
[-setQuota<quota><dirname>...<dirname>]
[-clrQuota<dirname>...<dirname>]
[-setSpaceQuota<quota><dirname>...<dirname>]
[-clrSpaceQuota<dirname>...<dirname>]
3、JavaAPI
(*)jar 包:
/root/training/hadoop-2.4.1/share/hadoop/common
/root/training/hadoop-2.4.1/share/hadoop/common/lib
/root/training/hadoop-2.4.1/share/hadoop/hdfs
/root/training/hadoop-2.4.1/share/hadoop/hdfs/lib
(*)创建目录: hdfsdfs-mkdir/tools
HDFS 的权限检查:功能非常弱 你说你是谁,你就谁
当前用户 同组用户 其他人
根目录的权限:inode="/":root:supergroup:d rwx r-x r-x
PATH=$PATH:$HOME/bin
export PATH
JAVA_HOME=/root/training/jdk1.7.0_75
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
HADOOP_HOME=/root/training/hadoop-2.4.1
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH