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

来源:互联网 发布:生态科技城大数据企业 编辑:程序博客网 时间:2024/05/01 22:52

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


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/hadoopexport PATH=$PATH:$HADOOP_HOME/binexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport 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/binexport PATH=$PATH:$HADOOP_FREFIX/sbinexport HADOOP_MAPRED_HOME=${HADOOP_FREFIX}export YARN_HOME=${HADOOP_FREFIX}export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoopexport 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 0
原创粉丝点击