hadoop 集群搭建与注意点

               一花一世界 一叶一菩提。

       这应该是第二次学习hadoop , 第一次是两年前,刚开始找工作,当时个人眼界 认为ssh 与移动app 开发比较流行,至于hadoop 是一个比较高端的东西,还有一个原因就是当时急需摆脱对父母的依赖,需要一份工作,用活自己;这两年过去了,再次从新审视大数据,感觉一切又回到起点,只不过个人心态,经历,行业环境都发生改变。

        我用hadoop 2.7.3 算是比较新版本。 http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz  (我用浏览器,百度云下载都失败, 最后用迅雷下载成功);

         hadoop 基本知识:

                  (1)HADOOP是apache旗下的一套开源软件平台

                  (2)HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 ;

                  (3)HADOOP的核心组件有
                                 A.HDFS(分布式文件系统)
                                B.YARN(运算资源调度系统)
                                C.MAPREDUCE(分布式运算编程框架)

           hadoop 历史:

                       (1) 当时Nutch 爬虫框架, 面对海量的网页,面临两大瓶颈: 一个海量数据存储索引问题, 另外就是网页价值计算;

                       (2)2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案: 一个是谷歌分布式存储GFS ,另外一个就是分布式计算框架MapReduce ;

                      (3) Nutch 作者以及相关开发人员,利用这两种思想,完善Nutch ,并且把hdfs 和mapReduce 独立开始,接着就有了现在hadoop ;

                     (4) 真正一战成名,是雅虎使用hadoop ,进行运营,并且开源; https://www.infoq.com/news/2010/07/yahoo-hadoop-summit 

          hadoop 重点:

                   (1) hadoop 一切重点都是围绕这两个HDFS(分布式存储)和MapReduce 分布计算框架展开;

                  (2) HDFS 分布文件系统:

                               (1) namenode :    

                                         (1) 在 HDFS 实例中的单独机器上运行的软件 ;

                                        (2)  它负责管理文件系统名称空间和控制外部客户机的访问 ;

                                        (3)  NameNode 决定是否将文件映射到 DataNode 上的复制块上 ;

                              (2) datanode :

                                      (1) 在 HDFS实例中的单独机器上运行的软件;

                                     (2) 响应来自 HDFS 客户机的读写请求, 比如: 存储,读取,删除等操作;

                 (3) MapReduce  分布式计算框架:

                               (1) 该引擎由 JobTrackers 和 TaskTrackers 组成 ;

             hadoop 特点:

                高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

                高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

                高效性。   Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
                高容错性。 Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
               低成本。    与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

          hadoop 运行在大量廉价的pc机,采用冗余和心跳机制, 最大可能保证数据的完整性,已经系统正常运行。

 

 

 

 

           安装篇:

                本人用的是笔记本,8G内存,不过风扇不是很好,用久了,进很多灰尘,导致大型程序运行,cpu 变高,温度也急速提升; 在百度云,购买一组云服务器(3台,每台1G内存,每台20G空间),另绑定一个1M宽带。

              

        两台服务器,就可以组成一个集群。 不过真所谓,一生二,二生三,三生万物。  所以就弄三台服务器。

        1. 先做一些预备(时间问题,我就简单点):

                    (1) 先安装java 环境,同时在 /etc/profile 文件添加: 

                               export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64

                               export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
                               export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

                                提示: 修改上面文件后,使用命令  source /etc/profile

                    (2)     安装同步软件: rsync -avz --progress root@172.xx.kk.hh::data /usr/local/data   (下载hadoop 等一些配置文件);

                   (3)     修改 /etc/hosts 文件; 把其他服务器内网地址已经服务器名称添加上去;

                  (4)     添加一下新系统账户:  adduser  hadoop  , passwd  hadoop  输入密码;

                  (5)    ssh 免秘钥登陆:

                                 (1) #进入到我的home目录 ;

                                  (2) 

                                          ssh-keygen -t rsa (四个回车)
                                           执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
                                          将公钥拷贝到要免密登陆的目标机器上
                                           ssh-copy-id 主机名(你所安装hadoop系统的主机名,要重复多次)

      2. 下载hadoop ,修改配置:

                 (1) 修改这六个文件,然后各个服务器hadoop 配置都相同;

                (2) 操作过程中,遇到坑:

                           (1)  hadoop-env.sh 里  export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64 ,java_home 必须填上,不然出现错误: JAVA_HOME is not set and could not be found.

             

第二个:core-site.xml

 

<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.4.1/tmp</value>
</property>

第三个:hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<name>dfs.secondary.http.address</name>
<value>主机名:50090</value>      <!--namenode 副本,不要跟namenode 存放在同一个主机里-->
</property>

 

第四个:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

第五个:yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>(存放namenode)主机名</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

               

 

      3. 开启软件:

             (1) 去主主机(你打算存储namenode 这台),初始化namenode , 执行命令  hadoop namenode -format ;

              (2)开启datanode , 执行命令  start-all.sh , 这脚本会自动通过ssh 把其他服务器hadoop datanode 启动;

                                     (1) stop-all.sh 停止所有的datanode 服务;

       hadoop 自带web 应用,可以查看到 hadoop 运行状况,  http://xxx.ff.xxx.kk:50070/dfshealth.html#tab-overview

    时间不早了,就到这里。 你可能还会遇到其他问题。

 

 

 

 

 

 

 

       

 

      

posted @ 2017-07-13 02:23  枫叶情缘  阅读(286)  评论(0编辑  收藏  举报