Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20963
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 62
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-02 15:46
个人简介

青春是打开了就合不上的书,人生是踏上了就回不了头的路,既然坚持了就不要轻易放弃\\\\(^o^)/~

文章分类

全部博文(1)

文章存档

2014年(1)

我的朋友

分类: HADOOP

2014-10-30 21:02:20


第一步
创建hadoop用户

创建hadoop用户名与用户组

运行命令su - root,注意,不是命令su root,后者不能携带root用户的参数信息,是不能执行创建用户组和用户命令的。

创建组命令、创建用户命令、设置用户密码:

  1. $ groupadd hadoop
  2. $ useradd -g hadoop hadoop
  3. $ passwd hadoop
注意不能在/home目录下创建hadoop目录,否则创建hadoop用户会失败。创建好用户以后最好是重新启动系统,以hadoop用户登录系统。这样在之后的操作中就不需要suhadoop用户下,而且也不会纠缠于文件的owner问题。


第二步. 给hadoop用户添加权限

  1. $ chmod u+w /etc/sudoers
  2. $ vi /etc/sudoers

内容如下:

  1. ## Allow root to run any commands anywhere
  2. root   ALL=(ALL) ALL
  3. hadoop ALL=(ALL) ALL

第三步更改主机名
  1. $ sudo vi /etc/hosts
  1. 127.0.0.1 CentOS localhost
  2. 127.0.1.1 localhost localhost

第四步
配置SSH服务及无密码登陆

1.生成ssh密钥

    如果是其他用户登录的则切换到hadoop用户下,执行命令su - hadoop

/home/hadoop目录下执行命令:

  1. $ ssh-keygen -t rsa (一路回车,选择默认的保存路径)

密钥生成成功之后,进入.ssh目录,执行命令:

  1. $ cd .ssh
  2. $ cp id_rsa.pub authorized_keys
这个时候运行ssh localhost,让系统记住用户,之后ssh localhost就不需要再输入密码了。
  1. $ ssh localhost
注意:如果出现一下警告,则进入
.ssh目录,删除known_hosts文件,再次ssh localhost就可以了。

The authenticity of host 'localhost (::1)' can't be established.

RSA key fingerprint is 69:fb:9e:7f:dd:15:86:d1:95:d3:e9:b5:cf:88:98:e9.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (RSA) to the list of known hosts.

 

2.交换公钥

namenode上的公钥拷贝到datanode,在hadoop用户的用户目录下(/home/hadoop)下执行命令:ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@slave。同理,也可以将datanode上的公钥拷贝到namenode,但这不是必须的。两台机器在hadoop用户下互相ssh就不需要密码了。


第五步安装JDK

/usr/local/目录下新建java目录,将JDK解压到该目录下,

配置JDK的环境变量 /etc/profile下的配置

  1. $ sudo vi /etc/profile
配置内容如下:
  1. # set java environment
  2. export JAVA_HOME=/usr/local/java/jdk1.7.0_71
  3. export JRE_HOME=/usr/local/java/jdk1.7.0_71/jre
  4. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  5. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

这样我们就设置好了环境,然后重启才能生效,这里用命令source /etc/profile 就可以立即生效了:

  1. $ source /etc/profile

第六步安装配置hadoop环境

完成拷贝并解压hadoop安装包在/usr/local目录下后,

1. 配置Hadoop的环境变量 /etc/profile下的配置

  1. $ sudo vi /etc/profile

配置内容如下:

  1. # set hadoop environment
  2. export HADOOP_HOME=/usr/local/hadoop
  3. export PATH=$PATH:$HADOOP_HOME/bin
  4. export PATH=$PATH:$HADOOP_HOME/sbin
  5. export HADOOP_MAPARED_HOME=${HADOOP_HOME}
  6. export HADOOP_COMMON_HOME=${HADOOP_HOME}
  7. export HADOOP_HDFS_HOME=${HADOOP_HOME}
  8. export YARN_HOME=${HADOOP_HOME}
  9. export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

同样用命令source /etc/profile 就可以立即生效了

 

2.修改hadoophadoop-env.sh配置文件,设置jdk所在的路径

进入hadoop安装目录下,打开hadoop-env.sh配置文件

  1. $ sudo vi etc/hadoop/hadoop-env.sh
配置内容如下:
  1. # The java implementation to use.
  2. export JAVA_HOME=/usr/local/java/jdk1.7.0_71

或者修改hadoop下的mapred-env.sh配置文件,设置jdk所在的路径

export JAVA_HOME=/usr/local/java/jdk1.7.0_71

 

3.修改hadoop安装目录下的etc/hadoop/目录下的core-site.xmlyarn-site.xmlmapred-site.xmlhdfs-site.xml配置文件

  1. $ sudo vi etc/hadoop/core-site.xml
------------------------ core-site.xml配置文件内容:

  1. <configuration>
  2.     <property>
  3.          <name>fs.default.name</name>
  4.          <value>hdfs://localhost:9000</value>
  5.          <final>true</final>
  6.     </property>
  7.     <property>
  8.         <name>hadoop.tmp.dir</name>
  9.         <value>/home/hadoop/hadoop_tmp</value>
  10.     </property>
  11. </configuration>

  1. $ sudo vi etc/hadoop/hdfs-site.xml
------------------------ hdfs-site.xml
配置文件内容:
  1. <configuration>
  2.     <property>
  3.         <name>dfs.namenode.name.dir</name>
  4.         <value>/home/hadoop/dfs/name</value>
  5.         <final>true</final>
  6.     </property>
  7.     <property>
  8.         <name>dfs.datanode.data.dir</name>
  9.         <value>/home/hadoop/dfs/data</value>
  10.         <description>Determines where on the local
  11.           filesystem an DFS data node should store its blocks.
  12.           If this is a comma-delimited list of directories,
  13.           then data will be stored in all named
  14.           directories, typically on different devices.
  15.           Directories that do not exist are ignored.
  16.         </description>
  17.         <final>true</final>
  18.     </property>
  19.     <property>
  20.         <name>dfs.replication</name>
  21.         <value>1</value>
  22.     </property>
  23.     <property>
  24.         <name>dfs.permissions</name>
  25.         <value>false</value>
  26.     </property>
  27. </configuration>


没有mapred-site.xml配置文件,自己创建

  1. $ sudo vi etc/hadoop/mapred-site.xml.template
------------------------ mapred-site.xml配置文件内容:

  1. <configuration>
  2.     <property>
  3.         <name>mapreduce.framework.name</name>
  4.         <value>yarn</value>
  5.     </property>
  6.     <property>
  7.         <name>mapred.system.dir</name>
  8.         <value>/home/hadoop/mapred/system/</value>
  9.         <final>true</final>
  10.     </property>
  11.     <property>
  12.         <name>mapred.local.dir</name>
  13.         <value>/home/hadoop/mapred/local</value>
  14.         <final>true</final>
  15.     </property>
  16. </configuration>

  1. $ sudo vi etc/hadoop/yarn-site.xml
------------------------ yarn-site.xml
配置文件内容:
  1. <configuration>
  2.     <property>
  3.         <name>yarn.nodemanager.aux-services</name>
  4.         <value>mapreduce_shuffle</value>
  5.     </property>
  6.     <property>
  7.         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  8.         <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  9.     </property>
  10. </configuration>



4.启动hadoop

初次启动hadoop之前,先进行格式化:

  1. $ bin/hdfs namenode -format

注意:格式化命令与旧版本的命令(bin/hadoop namenode -format)不一样

伪分布式启动:

  1. sbin/start-all.sh

完全分布式启动hadoop

启动namenode

  1. $ sbin/hadoop-daemon.sh start namenode
  2. $ sbin/hadoop-daemon.sh start datanode
运行测试:
  1. $ jps

如果没有出现DataNode或者NameNode,证明启动没有成功,可以查看hadoop安装目录下的logs下的日志记录。

可以使用sbin/hadoop-daemon.sh stop datanode(或namenode)来关闭。

启动Manage管理:

  1. $ sbin/yarn-daemon.sh start resourcemanager
  2. $ sbin/yarn-daemon.sh start nodemanager


运行测试:


  1. $ jps
  2. 23659 ResourceManager
  3. 23533 SecondaryNameNode
  4. 23395 DataNode
  5. 27851 Jps
  6. 23284 NameNode
  7. 23758 NodeManager


打开web网页,输入,访问50070端口可以查看namenode信息;

打开web网页,输入,访问8088端口可以查看job信息。

 

5.wordcount例子测试

(1)在本地创建两个文件file1.txtfile2.txt并输入内容

  1. $ echo "hello world hello hadoop hello map hello reduce" >> file1.txt
  2. $ echo "hello Leon hello olhho hello kitty" >> file2.txt


(2)dfs上创建一个目录/user/hadoop/input

  1. $ bin/hdfs dfs -mkdir /user
  2. $ bin/hdfs dfs -mkdir /user/hadoop
  3. $ bin/hdfs dfs -mkdir /user/hadoop/input


(3)上传本地文件到input

  1. $ bin/hdfs dfs -put file1.txt /user/hadoop/input
  2. $ bin/hdfs dfs -put file2.txt /user/hadoop/input
(4)查看上传的文件及文件内容


  1. $ bin/hdfs dfs -ls /input
  2. $ bin/hdfs dfs -cat /input/*
(5)执行worcount例子
  1. $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount
  2. /user/hadoop/input /user/hadoop/output (注意这里是一行命令)


注意:这里命令是bin/hadoop 而不是bin/hdfs

 
(6)查看输出结果


  1. $ $ bin/hdfs dfs -cat /user/hadoop/output/*
  2. Leon 1
  3. hadoop 1
  4. hello 7
  5. kitty 1
  6. map 1
  7. olhho 1
  8. reduce 1
  9. world 1


 

 

 

 

阅读(2401) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~