Hadoop的安装配置
Hadoop所有版本:
http://archive.apache.org/dist/
1.查看防火墙开机启动状态
chkconfig iptables --list |
关掉防火墙开机启动
chkconfig iptables off |
2.修改主机名
2.1 vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.122.128 nameNode |
2.2 vim /etc
NETWORKING=yes HOSTNAME=nameNode |
3.安装jdk,并配置环境
export JAVA_HOME=/usr/java/jdk1.7.0_79
|
source /etc/profile (文件生效)
4.hadoop配置步骤:
/usr/hc/hadoop-2.2.0/etc/hadoop
4.1 /usr/hc/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
修改内容:export JAVA_HOME=/usr/java/jdk1.7.0_79
4.2 /usr/hc/hadoop-2.2.0/etc/hadoop core-site.xml
修改内容
<configuration> <!—用来指定HDFS老大(NameNode)的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://nameNode:9000</value> </property> <!—用来指定Hadoop运行时产生文件的存放目录--> <property> <name>hadoop.tmp.dir</name> <value>/usr/hc/hadoop-2.2.0/tmp</value> </property> </configuration> |
4.3 /usr/hc/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
修改内容:
<configuration> <!—指定hDFS保存数据副本的数量(1表示伪分布式)--> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
4.4 /usr/hc/hadoop-2.2.0/etc/hadoop/mapred-site.xml
(mapred-site.xml.template重命名为mapred-site.xml)
<configuration> <!--告诉hadoop以后MR运行在YARN上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |
4.5 /usr/hc/hadoop-2.2.0/etc/hadoop/yarn-site.xml
<configuration> <!--NodeManager获取数据的方式是shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--指定Yarn的老大(ResourceManager)的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>nameNode</value> </property> <!-- Site specific YARN configuration properties -->
</configuration> |
5.将hadoop添加到环境变量中
在/etc/profile修改如下
export JAVA_HOME=/usr/java/jdk1.7.0_79 export HADOOP_HOME=/usr/hc/hadoop-2.2.0 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin |
再刷新
source /etc/profile
6.初始化HDFS (格式化文件系统)
#hadoop namenode -format(过时了,但是依然可用)
hdfs namenode -format |
6.1 启动HDFS和YARN
./start-all.sh
(过时了This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh)
#有个小问题:需要多次输入密码
6.2.可以通过浏览器的方式验证
http://192.168.122.128:50070 (hdfs管理界面)
6.3点击Browse the filesystem 出现文件管理界面
此时什么也没有,因为没有给hdfs存任何文件
http://192.168.122.128:8088 (yarn管理界面)
6.4 测试HDFS
#上传文件到hdfs
hadoop fs -put /usr/local/src/devsoft/jdk-7u79-linux-i586.gz hdfs://nameNode:9000/jdk
将文件jdk上传至hdfs。再从HDFS管理界面点击Browse the filesystem,将会出现如下界面
#从HDFS下载文件到本地
hadoop fs -get hdfs://nameNode:9000/jdk /home/jdk1.7
6.5.测试MR和YARN
/usr/hc/hadoop-2.2.0/share/hadoop/mapreduce目录下
hadoop jar hadoop-mapreduce-examples-2.2.0.jar |
有提示,运行其中一个例子
hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount |
再有提示,
提示需要两个参数,分别是输入和输出参数
先用命令hadoop fs -ls hdfs://nameNode:9000/ 查看hdfs下面存储的文件
hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount hdfs://nameNode:9000/words hdfs://nameNode:9000/wout |
7.配置ssh免登陆
生成ssh免登陆秘钥
ssh-keygen -t rsa |
执行完这个命令后,会生成两个文件id_rsa(私钥) id_rsa.pub(公钥),再将公钥拷贝到要登陆的机器上。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized |
或
ssh-copy-id nameNode |
分布式文件存储系统与HDFS
1.常见的分布式文件系统
GFS、HDFS、Lustre、Ceph、GridFS、mogileFS、TFS、FastDFS
2.HDFS shell
2.1 查看帮助
hadoop fs -help
2.2上传
hadoop fs -put <linux上文件> <hdfs上的路径>
2.3查看文件内容
hadoop fs -cat <hdfs上的路径>
2.4查看文件列表
hadoop fs -ls /
2.5下载文件
hadoop fs -get <hdfs上的路径> <linux上文件路径>
3.HDFS架构
3.1 RPC远程调用,底层走的还是Socket;
4.MapReduce
4.1执行步骤
(1)Map任务 处理
1.1读入输入的文件内容,解析成key,value对。对输入文件的每一行,解析成key,value对。每一个键值对,调用一次map函数;
1.2 写自己的逻辑,对输入的key,value处理,转换成新的key,value输出;
1.3对输出的key,value进行分区;
1.4对不同分区的数据,按照key进行排序、分组。相同的key的value放到一个集合里面。
1.5(可选)分组后的数据进行归约;
(2)Reduce的原理
2.1对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点;
2.2对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key,value输出;
2.3把reduce的输出保存到文件中;
--------------------------------------------待续不断更新-----------------------------------
<!--EndFragment-->