hadoop 0.23.4 下载、编译与配置(单机或集群)

一两年前做的东西,现在放上来,一来是为了跟大家分享一下,二来可以留给自己以后参考


1.下载

指导老师要求大家统一用hadoop0.23.4,现在很难下到了,我提供个下载链接先:

http://pan.baidu.com/s/1i37i36P

这个包里面只有源码,编译通过后才能得到hadoop-0.23.4.tar.gz这个二进制文件

我的系统版本为CentOS release 6.4 (Final),装机时已经自带装好了一些其他软件,例如maven,未自带的可以到apache官网下载maven。


2.编译

解压包后进入包目录首先执行

mvn package -Pdist -DskipTests -Dtar

第一次要联网下很多包,时间比较长,大家耐心点。

如果在编译HADOOP-AUTH时候报错,就更改hadoop-common-project/hadoop-auth/pom.xml  

    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <scope>test</scope>
    </dependency>
前面增加

    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <scope>test</scope>
    </dependency>

即可

之后编译Apache Hadoop HDFS时如果报protoc: command not found

可以到网上下载一个google的protobuf

最后将显示[INFO] BUILD SUCCESS

然后你就可以看到在hadoop-dist下面多出了target文件夹,编译的结果都在里面

hadoop-0.23.4.tar.gz是打好的包,未修改的话与官方的二进制文件无异

下一步执行

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

就可以在Eclipse环境下修改hadoop了


3.配置

3.1准备工作

新建一个用户组与用户,本人hadoop用root用户无法运行,必须新建

[root@arionvm1 ~]# groupadd hadoop
[root@arionvm1 ~]# useradd -g hadoop hadoop
[root@arionvm1 ~]# passwd hadoop

配置ssh免密码登录

使用hadoop用户,不同用户公钥不同

[root@arionvm1 ~]# # su hadoop
[hadoop@arionvm1 root]$ ssh-keygen -t rsa -P ""
[hadoop@arionvm1 root]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


如果是单机这样就可以了,如果是集群的话,我是三台机器,每台机器上都执行前六条指令,然后通过scp命令将生成三个的id_rsa.pub汇聚成一个文件,放入authorized_keys中

最后得到的authorized_keys文件类似

ssh-rsa == ??...hadoop@thangool-test1
ssh-rsa == ??...hadoop@thangool-test2
ssh-rsa == ??...hadoop@arionvm1

如果权限不对还要执行chmod 644 authorized_keys

可以通过测试ssh远程登录,如果可以不要密码的话就是成功了

3.2安装hadoop

[root@arionvm1 opt]# tar xzf hadoop-0.23.4.tar.gz
[root@arionvm1 opt]# ln -s hadoop-0.23.4 hadoop
[root@arionvm1 opt]# chown -R hadoop:hadoop hadoop

3.3配置环境变量
[root@arionvm1 opt]# su hadoop

[hadoop@arionvm1 opt]$ vi ~/.bashrc

增加

export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

3.4配置hadoop

[hadoop@arionvm1 opt]$ cd /opt/hadoop/etc/hadoop

修改core-site.xml

<configuration>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://arionvm1:49000</value>
</property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/hadoop-root</value>
  </property>
</configuration>

修改hdfs-site.xml

<configuration>
        <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/dfs/name</value>
        <final>true</final>
        </property>
        <property>
        <name>dfs.namenode.data.dir</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/dfs/data</value>
        <final>true</final>
        </property>
        <property>
        <name>dfs.replication</name>
        <value>2</value>
        </property>
        <property>
        <name>dfs.permission</name>
        <value>false</value>
        </property>
</configuration>
修改mapred-stie.xml(没有就创建)

<configuration>
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
        <property>
        <name>mapreduce.job.tracker</name>
        <value>hdfs://arionvm1:9001</value>
        <final>true</final>
        </property>
        <property>
        <name>mapred.job.history.server.embedded</name>
        <value>true</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.address</name>
        <value>0.0.0.0:10020</value>
        </property>
        <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>0.0.0.0:19888</value>
        </property>
        <property>
        <name>mapreduce.map.memory.mb</name>
        <value>1800</value>
        </property>
        <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx1700M</value>
        </property>
        <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>1800</value>
        </property>
        <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx1700M</value>
        </property>
        <property>
        <name>mapreduce.task.io.sort.mb</name>
        <value>512</value>
        </property>
        <property>
        <name>mapreduce.task.io.sort.factor</name>
        <value>100</value>
        </property>
        <property>
        <name>mapreduce.reduce.shuffle.parallelcopies</name>
        <value>50</value>
        </property>
        <property>
        <name>mapreduce.system.dir</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/mapred/system</value>
        </property>
        <property>
        <name>mapreduce.local.dir</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/mapred/local</value>
        <final>true</final>
        </property>
</configuration>

修改yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
    <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>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
      <property>
        <name>user.name</name>
        <value>hadoop</value>
      </property>
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>10.10.96.88:54311</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>10.10.96.88:54312</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>10.10.96.88:54313</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>10.10.96.88:54314</value>
      </property>
      <property>
        <name>yarn.web-proxy.address</name>
        <value>10.10.96.88:54315</value>
      </property>
      <property>
        <name>mapred.job.tracker</name>
        <value>10.10.96.88</value>
      </property>
      <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/nmdata/local</value>
        <description>the local directories used by thenodemanager</description>
      </property>
      <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>file:/opt/hadoop/workspace/hadoop_space/nmdata/log</value>
        <description>the directories used by Nodemanagers as logdirectories</description>
      </property>
</configuration>

修改yarn-env.sh,在末尾增加

export HADOOP_FREFIX=/opt/hadoop export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop

单机版就这样设置完毕了,集群版继续下面步骤

我有三台机器,分别是arionvm1、thangool-test1、thangool-test2

其中arionvm1当namenode,剩余两个当datanode

在masters中写下arionvm1,在slaves中写下thangool-test1和thangool-test2

上面的host名字都是自己定义的,我们需要将之与ip对应,

[root@arionvm1 opt]# vi /etc/hosts

在该文件下加类似下面几行,集群的按自己的写,单机的如果用的localhost就不用加了,用了别的名字可以把ip设置为127.0.0.1

10.10.96.88     arionvm1
10.10.96.89     thangool-test1
10.10.96.90     thangool-test2

这样就配置完毕

3.5运行hadoop

集群的话通过scp -r将改好的hadoop文件夹整个拷贝到所有的其他机器上即可,

此外集群建议关掉防火墙,否则可能无法连接,运行如下指令

[root@arionvm1 ~]# service iptables stop

然后集群与单机后面都一样的部分

[hadoop@arionvm1 opt]$ /opt/hadoop/bin/hadoop namenode -format
[hadoop@arionvm1 opt]$ cd /opt/hadoop/sbin/
[hadoop@arionvm1 opt]$ ./start-dfs.sh
[hadoop@arionvm1 opt]$ ./start-yarn.sh

大功告成了,我可以露出本文的唯一一个笑脸了大笑

最后说一下,可以通过jps查看是否正常运行,还有wordcount测试部分,网上有很多,我略微提一下

[hadoop@arionvm1 hadoop]$ find . -name *examples*.jar
./share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.4.jar

新建几个文件,里面包含要统计的字符,放在一个文件夹内,这里我放在word文件夹内

[hadoop@arionvm1 for_test]$ hadoop dfs -copyFromLocal word /tmp/test
[hadoop@arionvm1 hadoop]$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.4.jar wordcount /tmp/test/ /tmp/output
如果报FileAlreadyExistsException可以运行

[hadoop@arionvm1 hadoop]$ hadoop dfs -rm -r /tmp/output

查看结果可以通过

[hadoop@arionvm1 hadoop]$ hadoop dfs -ls /tmp/output
[hadoop@arionvm1 hadoop]$ hadoop dfs -cat /tmp/output/part-r-00000


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值