程序员人生 网站导航

hadoop环境搭建

栏目:服务器时间:2017-02-15 09:30:12

初学hadoop,虽然有公司有已配置好的hadoop环境,但是为了加深理解,还是决定自己搭建1次。hadoop环境的搭建其实进程其实不多,关键是后面修改配置文件时容易出现很多的问题,这几天用了很多时间,反复装反复改,终究把环境全部装好。下面就来回顾1下搭建进程。


1、linux安装环境与安装包。

CentOS 7   3台  (已提早装好,网络地址转换使用NAT模式,确保主机之间可以相互ping通)

hadoop-master :192.168.15.128

hadoop-slave1 :192.168.15.129

hadoop-slave2 : 192.168.15.130     //静态IP


java安装包     jdk⑻u111-linux-x64.rpm


hadoop安装包   hadoop⑵.7.1.tar.gz


2、主机之间配置ssh免密钥登录。

1、  主机A:ssh-keygen–t rsa

2、  A机.ssh下:scp id_rsa.pub hadoop@192.168.15.129:/home/hadoop/.ssh/id_rsa.pub(复制公钥到B机)

3、  B机.ssh下: cat id_rsa.pub >> authorized_keys(添加公钥)(B主机需要先创建好.ssh文件夹)

4、  B机.ssh下:chmod 600 authorized_keys    (修改文件权限)

5、  B机~下:chmod 700 .ssh   (修改文件夹权限)


3、安装jdk。

1、官网下载jdk⑻u111-linux-x64.rpm安装包。

2、将安装包放到/usr/java/下解压,输入命令,tar -zxvf jdk⑺u79-linux-x64.gz。

3、编辑/etc/profile,添加:

      JAVA_HOME=/usr/java/jdk1.8.0_111
      JRE_HOME=/usr/java/jdk1.8.0_111/jre
      PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
      CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
      export JAVA_HOME JRE_HOME PATH CLASSPATH

4、使配置生效,输入命令,source /etc/profile。

5、检查是不是安装成功,java -version,完成。


4、hadoop安装。


1、将hadoop⑵.7.1.tar.gz放在/home/hadoop/下,解压:tar -xzvf hadoop⑵.7.0.tar.gz。

2、修改配置文件。(重点来了!!!)

(1)需要修改的文件基本上都在 /hadoop⑵.7.1/etc/hadoop/下(有1特例,.bashrc最后会讲)


          core-site.xml:

          <configuration>
               <property>
                   <name>fs.defaultFS</name>
                   <value>hdfs://192.168.15.128:8020</value>
               </property>
               <property>
                   <name>fs.default.name</name>
                   <value>hdfs://192.168.15.128:8020</value>
               </property>
               <property>
                   <name>hadoop.tmp.dir</name>
                   <value>/home/hadoop/hadoop⑵.7.1/data/hadoop_tmp</value>
               </property>
           </configuration>

          hdfs-site.xml:

           <configuration>
               <property>
                   <name>dfs.namenode.name.dir</name>
                   <value>/home/hadoop/hadoop⑵.7.1/data/nameNodeData</value>
               </property>
               <property>
                   <name>dfs.datanode.data.dir</name>
                   <value>/home/hadoop/hadoop⑵.7.1/data/dataNodeData</value>
               </property>
               <property>
                   <name>dfs.replication</name>
                   <value>2</value>
               </property>
            </configuration>

           mapred-site.xml:

           <configuration>
               <property>
                   <name>mapreduce.framework.name</name>
                   <value>yarn</value>
               </property>
               <property>
                   <name>mapred.job.tracker</name>
                   <value>hdfs://hadoop-master</value>
               </property>
               <property>
                   <name>mapred.local.dir</name>
                   <value>/home/hadoop/hadoop⑵.7.1/data/jobTracker</value>
                   </property>
               <property>
                   <name>mapreduce.application.classpath</name>
                   <value>
                       /home/hadoop/hadoop⑵.7.1/etc/hadoop,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
                   </value>
               </property>
           </configuration>

           yarn-site.xml:

           <configuration>
               <property>
                   <name>yarn.resourcemanager.hostname</name>
                   <value>hadoop-master</value>
               </property>
               <property>
                   <name>yarn.nodemanager.aux-services</name>
                   <value>mapreduce_shuffle</value>
               </property>
               <property>
                   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
               </property>
               <property>
                   <name>yarn.application.classpath</name>
                   <value>
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/common/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/common/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/hdfs/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/mapreduce/lib/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/*,
                       /home/hadoop/hadoop⑵.7.1/share/hadoop/yarn/lib/*
                   </value>
              </property>
          </configuration>

         下面两个文件修改的地方只有1处,只需export JAVA_HOME 便可。

          hadoop-env.sh:

          yarn-env.sh:

最后1步,很重要!!!

前面提到了,还有1个.bashrc文件不在/hadoop/hadoop⑵.7.1/etc/hadoop/下的,这个文件就在hadoop下,由因而1个隐藏文件,ls -a 便可查看。

添加以下内容:

export JAVA_HOME=export JAVA_HOME=/usr/java/jdk1.8.0_111
export HADOOP_HOME=/home/hadoop/hadoop⑵.7.1

export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_YARN_HOME=$HADOOP_HOME

export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH


1开始没有修改这个文件,总是会出现

毛病: 找不到或没法加载主类 org.apache.hadoop.hdfs.server.namenode.NameNode

这样的问题,缘由就是找不到hadoop路径,致使hdfs节点出错。

以上所有步骤完成便可运行hadoop程序,我也从网上找了1下类似单词计数、单词排序等小程序测试,都可顺利实现。唯1缺点就是mapreduce进程太耗时。


总结:从虚拟机安装、linux系统安装、hadoop安装,前前后后花了1周时间,但是后面看来是值得的,现在刚刚开始接触hadoop,对这些基础性的知识还是需理解清楚,在后面hadoop实际开发中能够节俭很多查错改错的时间。我也是个初学者,以上的配置个人也是通过网上和导师电脑上的配置结合,最后总结出来的。使用相同方法应当是可以很快搭建好hadoop平台的,希望能给和我1样刚刚接触hadoop的同学带来1些帮助。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐