更新:

    现在分享一个完全分布式的链接博客,

    http://blog.51cto.com/balich/2062052

    感谢这位大神!

-----------------------------------------------------------------------------------

伪分布式:

参考链接:http://gitbook.cn/books/5954c9600326c7705af8a92a/index.html

                http://blog.csdn.net/hliq5399/article/details/78193113

                十分感谢!

下面开始:

本次安装系统环境为:

        VMware虚拟机安装centos7.3 linux系统

        java JDK1.8(自行百度安装一下就好了)

        root用户

亲测可用

1.下载解压hadoop安装包

        下载地址:http://hadoop.apache.org/releases.html

        这里选择2.8.3  binary 二进制包文件,原因是已经编译好了,只需要下载下来解压进行了,不需要再编译安装了

2.创建存放hadoop文件的目录

        $ sudo mkdir /opt/modules 

      这里我们选择 /opt/modules/目录作为hadoop文件的存放目录,所以将下载好的hadoop binary二进制包解压到/opt/modules/目录下 (解压后的名字为hadoop-2.8.3/)

        $ tar -zxvf hadoop-2.8.3.tar.gz

3.配置Hadoop

        a>配置Hadoop环境变量

                $ vim /etc/profile

                在profile配置文件里最下面追加配置:       

    export HADOOP_HOME="/opt/modules/hadoop-2.8.3"
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

                保存退出之后执行$ source /etc/profile 使得配置生效

                验证HADOOP_HOME参数:

                        终端运行命令$ echo $HADOOP_HOME

        b>配置hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数

                进入hadoop的文件目录,我的是:/opt/moudles/hadoop-2.8.3/

                所以: $ cd /opt/moudles/hadoop-2.8.3/

                然后 vim /etc/hadoop/hadoop-env.sh

                修改JAVA_HOME参数为:

                export JAVA_HOME="XXXXX"(为java_home的路径,如果不知道可以执行echo $JAVA_HOME命令查看)

                 ...mapred-env.sh  yarn-env.sh文件的JAVA_HOME参数也是按照上面的步骤配置修改

        c>修改core-site.xml

                 文件目录为/opt/modules/hadoop-2.8.3/etc/hadoop/, 配置文件都在这个目录下

                在configutation标签里添加如下配置

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.31.128:8020</value>
</property><property>    <name>hadoop.tmp.dir</name>    <value>/opt/data/tmp</value></property>

                 (1) fs.defaultFS参数配置的是HDFS的地址

<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.31.128:8020</value>
</property>

                 (2) hadoop.tmp.dir 配置的是hadoop的临时目录,比如HDFS的NameNode数据默认都存放在这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。原来hadoop.tmp.dir是在/tmp/hadoop-${user.name},如果操作系统重启了,那么NameNode存在这个目录下的HDFS0的元数据就会被清除,(tmp是linux 的临时目录,重启会自动清除这个目录下的所有数据),所以我们要修改这个路径。

                   配置放进去之后,就开始创建刚才的/opt/data/tmp/临时目录,虽然配置了这个目录,但是这个目录是我们自己定义的还不存在,所以要创建它。

4. 格式化HDFS

$ hdfs namenode –format

            hdfs命令在hadoop-2.8.3/bin/目录下 

            格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。

格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。

5.启动NameNode

           $ /hadoop-2.8.3/sbin/hadoop-daemon.sh start namenode

6.启动DataNode

            $ /hadoop-2.8.3/sbin/hadoop-daemon.sh start dataname

7.启动SecondaryNameNode

            $ /hadoop-2.8.3/sbin/hadoop-daemon.sh start secondarynamenode

8. jps命令查看是否已经启动成功,有结果就是启动成功了。

[root@xxx hadoop-2.8.3]$ jps
3034 NameNode
3233 Jps
3193 SecondaryNameNode
3110 DataNode

9. HDFS上创建目录,

           [root@xxx hadoop-2.8.3]$ /bin/hdfs dfs -mkdir /demol

10. 上传本地文件到HDFS上

            [root@xxx hadoop-2.8.3]$ /bin/hdfs dfs -put /root/hadoop/a.txt /demol

11.读取HDFS上的文件

            [root@xxx hadoop-2.8.3]$ /bin/hdfs dfs -cat /demol/a.txt

12. 从HDFS上下载文件到本地

            [root@xxx hadoop-2.8.3]$ /bin/hdfs dfs -get /demol/a.txt /root/hadoop/

13. 配置启动YARN  

        1、 配置mapred-site.xml

        默认没有mapred-site.xml文件,但是有个mapred-site.xml.template配置模板文件。复制模板生成mapred-site.xml。

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

            添加如下配置:      指定mapreduce运行在yarn框架上。

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
        

        2、 配置yarn-site.xml

            添加配置如下:

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>192.168.31.128</value>
 </property>
  •   yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。

  •   yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。

        3. 启动Resourcemanager

           $ /hadoop-2.8.3/sbin/yarn-daemon.sh start resourcemanager

        4.启动nodemanager

            $ /hadoop-2.8.3/sbin/hadoop-daemon.sh start nodemanager

        5. jps查看是否启动成功

[root@xxx hadoop-2.8.3]$ jps
3034 NameNode
4439 NodeManager
4197 ResourceManager
4543 Jps
3193 SecondaryNameNode
3110 DataNode

            可以看到ResourceManager、NodeManager已经启动成功了。

        

            6、 YARN的Web页面

                YARN的Web客户端端口号是8088,通过http://192.168.100.10:8088/可以查看。

enter image description here


在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar,可以运行这些例子体验刚搭建好的Hadoop平台,我们这里来运行最经典的WordCount实例。

    1.创建测试用的Input文件

        a>创建输入目录

bin/hdfs dfs -mkdir -p /wordcountdemo/input

        b>创建原始文件

            在本地/opt/data目录创建一个文件wc.input,内容如下

            

        c.  将wc.input文件上传到HDFS的/wordcountdemo/input目录中:      

bin/hdfs dfs -put /opt/data/wc.input /wordcountdemo/input

       2、 运行WordCount MapReduce Job

bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.8.3.jar wordcount /wordcountdemo/input /wordcountdemo/output

       3. 查看输出目录结果

bin/hdfs dfs -ls /wordcountdemo/output

       

  • output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。

  • part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果,mapreduce程序执行时,可以没有reduce阶段,但是肯定会有map阶段,如果没有reduce阶段这个地方有是-m-。

  • 一个reduce会产生一个part-r-开头的文件。

  • 查看输出文件内容。

[root@xxx hadoop-2.8.3]$ bin/hdfs dfs -cat /wordcountdemo/output/part-r-00000
hadoop  3
hbase   1
hive    2
mapreduce       1
spark   2
sqoop   1
storm   1

结果是按照键值排好序的。

十九、停止Hadoop

 [root@xxx hadoop-2.8.3]$ sbin/hadoop-daemon.sh stop namenode
stopping namenode
[root@xxx hadoop-2.8.3]$ sbin/hadoop-daemon.sh stop datanode
stopping datanode
[root@xxx hadoop-2.8.3]$ sbin/yarn-daemon.sh stop resourcemanager
stopping resourcemanager
[root@xxx hadoop-2.8.3]$ sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐