hadoop-2.6.0单机配置和伪分布式配置

时间:2022-09-24 20:57:40

http://blog.csdn.net/ggz631047367/article/details/42426391


需要重新编译的教程:http://blog.csdn.net/ggz631047367/article/details/42460589

在Ubuntu下创建hadoop用户组和用户

hadoop的管理员最好就是以后要登录桌面环境运行eclipse的用户,否则后面会有拒绝读写的问题出现。当然不是也有办法办法解决。

1. 创建hadoop用户组;

[html] view plaincopy
  1. sudo addgroup hadoop  

2. 创建hadoop用户;

[html] view plaincopy
  1. sudo adduser -ingroup hadoop hadoop  

3. 给hadoop用户添加权限,打开/etc/sudoers文件;

[html] view plaincopy
  1. sudo gedit /etc/sudoers  

在root   ALL=(ALL:ALL)   ALL下添加hadoop   ALL=(ALL:ALL)  ALL.

在Ubuntu下安装JDK

具体见:http://blog.csdn.net/ggz631047367/article/details/42366687           //JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25

安装ssh服务 

[html] view plaincopy
  1. sudo apt-get install ssh openssh-server  

建立ssh无密码登录本机

切换到hadoop用户,执行以下命令:

[html] view plaincopy
  1. su - hadoop  

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

1. 创建ssh-key,,这里我们采用rsa方式;

[html] view plaincopy
  1. ssh-keygen -t rsa -P "" (注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)  

2. 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;

[html] view plaincopy
  1. cd ~/.ssh  
  2. cat id_rsa.pub >> authorized_keys (完成后就可以无密码登录本机了。)  

3. 登录localhost;   (127.0.0.1也登陆下)

[html] view plaincopy
  1. ssh localhost  

4. 执行退出命令;

[html] view plaincopy
  1. exit  

安装hadoop 

下载地址:http://apache.fayea.com/hadoop/common/stable/hadoop-2.6.0.tar.gz

1. 把hadoop解压到/usr/local下:

[html] view plaincopy
  1. sudo tar -zxvf hadoop-2.6.0.tar.gz  
  2. sudo mv hadoop-2.6.0 /usr/local/hadoop  
  3. sudo chmod -R 775 /usr/local/hadoop  
  4. sudo chown -R hadoop:hadoop /usr/local/hadoop  //否则ssh会拒绝访问  

2.配置

  • 可以修改/etc/profile的配置:

[html] view plaincopy
  1. vi /etc/profile

在文件末尾添加:

[html] view plaincopy
  1. #HADOOP VARIABLES START  
  2.   
  3. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25  
  4.   
  5. export HADOOP_INSTALL=/usr/local/hadoop  
  6.   
  7. export PATH=$PATH:$HADOOP_INSTALL/bin  
  8.   
  9. export PATH=$PATH:$HADOOP_INSTALL/sbin  
  10.   
  11. export HADOOP_MAPRED_HOME=$HADOOP_INSTALL  
  12.   
  13. export HADOOP_COMMON_HOME=$HADOOP_INSTALL  
  14.   
  15. export HADOOP_HDFS_HOME=$HADOOP_INSTALL  
  16.   
  17. export YARN_HOME=$HADOOP_INSTALL  
  18.   
  19. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native  
  20.   
  21. export HADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib:${HADOOP_INSTALL}/lib/native"
  22.   
  23. #HADOOP VARIABLES END  

如果不知道JAVA_HOME可以通过命令获得:

[html] view plaincopy
  1. update-alternatives --config java  
目录取到java根目录即可。


执行下面命令使改动生效:

[html] view plaincopy
  1. source /etc/profile

  • 修改hadoop-env.sh的配置:

[html] view plaincopy
  1. sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh  

找到JAVA_HOME改为上面的值。


测试

  • 通过执行hadoop自带实例WordCount验证是否安装成功

 /usr/local/hadoop路径下创建input文件夹  

[html] view plaincopy
  1. mkdir input  
  2. cp README.txt input  
在hadoop目录下执行WordCount:
[html] view plaincopy
  1. bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar  
  2. org.apache.hadoop.examples.WordCount input output  

Hadoop伪分布式配置

sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml

[html] view plaincopy
  1. <configuration>  
  2.     <property>  
  3.         <name>hadoop.tmp.dir</name>  
  4.         <value>/usr/local/hadoop/tmp</value>  
  5.         <description>Abase for other temporary directories.</description>  
  6.     </property>  
  7.     <property>  
  8.         <name>fs.defaultFS</name>  
  9.         <value>hdfs://localhost:9000</value>  
  10.     </property>  
  11. </configuration>  

 sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml //此项不必要

[html] view plaincopy
  1. <configuration>  
  2.  <property>     
  3.       <name>mapred.job.tracker</name>    
  4.       <value>localhost:9001</value>     
  5.      </property>     
  6. </configuration>  

 sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml

[html] view plaincopy
  1. <configuration>  
  2. <property>  
  3. <name>mapreduce.framework.name</name>  
  4. <value>yarn</value>  
  5. </property>  
  6.   
  7. <property>  
  8. <name>yarn.nodemanager.aux-services</name>  
  9. <value>mapreduce_shuffle</value>  
  10. </property>  
  11. </configuration>  

 sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

[html] view plaincopy
  1. <configuration>  
  2. <property>  
  3.         <name>dfs.replication</name>  
  4.         <value>1</value>  
  5.     </property>  
  6.     <property>  
  7.         <name>dfs.namenode.name.dir</name>  
  8.         <value>file:/usr/local/hadoop/dfs/name</value>  
  9.     </property>  
  10.     <property>  
  11.         <name>dfs.datanode.data.dir</name>  
  12.         <value>file:/usr/local/hadoop/dfs/data</value>  
  13.     </property>  
  14.     <property>                 //这个属性节点是为了防止后面eclopse存在拒绝读写设置的  
  15.             <name>dfs.permissions</name>  
  16.             <value>false</value>  
  17.      </property>  
  18.  </configuration>  

sudo gedit /usr/local/hadoop/etc/hadoop/masters 添加:localhost

sudo gedit /usr/local/hadoop/etc/hadoop/slaves  添加:localhost


关于配置的一点说明:上面只要配置 fs.defaultFS 和 dfs.replication 就可以运行,不过有个说法是如没有配置 hadoop.tmp.dir 参数,此时 Hadoop 默认的使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在每次重启后都会被干掉,必须重新执行 format 才行(未验证),所以伪分布式配置中最好还是设置一下。

配置完成后,首先在 Hadoop 目录下创建所需的临时目录:

[html] view plaincopy
  1. cd /usr/local/hadoop  
  2. mkdir tmp dfs dfs/name dfs/data  

接着初始化文件系统HDFS。 [html] view plaincopy
  1. bin/hdfs namenode -format  
成功的话,最后的提示如下, Exitting with status 0 表示成功, Exitting with status 1: 则是出错。

[html] view plaincopy
  1. sbin/start-dfs.sh  
  2. sbin/start-yarn.sh  

Unable to load native-hadoop library for your platform这个提示,解决方式:
1、重新编译源码后将新的lib/native替换到集群中原来的lib/native
2、修改hadoop-env.sh ,增加
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"

Namenode information:http://localhost:50070来查看Hadoop的信息。

All Applications:http://http://2xx.81.8x.1xx:8088/,将其中的2xx.81.8x.1xx替换为你的实际IP地址。


运行例子:

1.先在hdfs上建个文件夹  bin/hdfs dfs -mkdir -p /user/ha1/input

                                  bin/hdfs dfs -mkdir -p /user/ha1/output

2.上传一些文件:bin/hdfs dfs -put etc/hadoop/  /user/ha1/input  把etc/hadoop文件上传到hdfs的/user/ha1/input中

3.执行指令

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /user/ha1/input/hadoop  /user/ha1/output/temp 'dfs[a-z.]+'

4.查看结果

bin/hdfs dfs -cat /user/ha1/output/temp/*

[html] view plaincopy
  1. 8   dfs.audit.logger  
  2. 4   dfs.class  
  3. 3   dfs.server.namenode.  
  4. 2   dfs.audit.log.maxbackupindex  
  5. 2   dfs.period  
  6. 2   dfs.audit.log.maxfilesize  
  7. 1   dfsmetrics.log  
  8. 1   dfsadmin  
  9. 1   dfs.servers  
  10. 1   dfs.replication  
  11. 1   dfs.file  
  12. 1   dfs.datanode.data.dir  
  13. 1   dfs.namenode.name.dir