hadoop2.X环境搭建

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

扫描二维码关注公众号,回复: 485593 查看本文章

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 启动HDFSYARN

./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.测试MRYARN

/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.常见的分布式文件系统

GFSHDFSLustreCephGridFSmogileFSTFSFastDFS

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执行步骤

1Map任务 处理

1.1读入输入的文件内容,解析成keyvalue对。对输入文件的每一行,解析成keyvalue对。每一个键值对,调用一次map函数;

1.2 写自己的逻辑,对输入的keyvalue处理,转换成新的keyvalue输出;

1.3对输出的keyvalue进行分区;

1.4对不同分区的数据,按照key进行排序、分组。相同的keyvalue放到一个集合里面。

1.5(可选)分组后的数据进行归约;

2Reduce的原理

2.1对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点;

2.2对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的keyvalue处理,转换成新的keyvalue输出;

2.3reduce的输出保存到文件中;

--------------------------------------------待续不断更新-----------------------------------

 

 

 

<!--EndFragment-->

猜你喜欢

转载自ronbay.iteye.com/blog/2236262