Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333821
  • 博文数量: 54
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-30 17:37
文章分类

全部博文(54)

文章存档

2015年(35)

2014年(19)

我的朋友

分类: HADOOP

2014-03-29 17:30:07

一、创建Hadoop用户
  sudo addgroup hadoop
  sudo adduser --ingroup hadoop hadoop
但是,所创建的用户还不具备admin权限,所以需要赋予admin权限。
  sudo gedit /etc/sudoers
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
这样,就可以使用hadoop用户,并且拥有admin权限了。以下操作,都是在hadoop用户下进行的。

二、安装配置SSH
需要注意的是先关闭防火墙,sudo ufw disable
然后安装SSH:sudo apt-get install ssh
这个安装完后,可以直接使用ssh命令了。
     执行$ netstat  -nat    查看22端口是否开启了。
     测试:ssh localhost。
     输入当前用户的密码,回车就ok了。说明安装成功,同时ssh登录需要密码。
   (这种默认安装方式完后,默认配置文件是在/etc/ssh/目录下。sshd配置文件是:/etc/ssh/sshd_config)
安装完成后,执行以下几步命令:
~$ cd /home/hadoop
~$ ssh-keygen -t rsa
然后一直回车,完成后,在home跟目录下会产生隐藏文件夹.ssh。
~$ cd .ssh
~$ ls
~$ cp id_rsa.pub  authorized_keys
测试:
~$ ssh localhost
第一次ssh会有提示信息:

The authenticity of host ‘node1 (10.64.56.76)’ can’t be established.
     RSA key fingerprint is 03:e0:30:cb:6e:13:a8:70:c9:7e:cf:ff:33:2a:67:30.
     Are you sure you want to continue connecting (yes/no)?

输入 yes 来继续。这会把该服务器添加到你的已知主机的列表中

发现链接成功,并且无需密码。


三、安装Hadoop
去站点下载一个安装包,我下载的是hadoop-1.2.1.tar.gz
解压到/home/hadoop文件夹下:
tar -zxvf hadoop-1.2.1.tar.gz
生成一个hadoop-1.2.1文件夹,将其更名为hadoop
mv hadoop-1.2.1 hadoop

四、配置Hadoop
1.需要将Java环境变量写入到Hadoop用户的.bashrc文件中

HADOOP_HOME=/home/hadoop/hadoop-1.2.1
JAVA_HOME=/usr/local/jdk1.7.0_51
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/lib:$CLASSPATH
export HADOOP_HOME
export JAVA_HOME
export PATH
export CLASSPATH


HADOOP_HOME与JAVA_HOME的值根据实际情况,写好后生效并验证
Java采用上一篇文章的方法,hadoop使用如下命令:
echo $HADOOP_HOME

2. 在/home/hadoop/hadoop/conf/hadoop-env.sh文件中添加环境变量信息。
找到# The java implementation to use.  Required.
export JAVA_HOME=/usr/local/jdk1.7.0_51
去注释,并改为如上的内容,JAVA_HOME根据实际情况
后面启动中如果出现ERROR:JAVA_HOME is not set这样的错误都是这一步的问题

3.配置core-site.xml、mapred-site.xml、hdfs-site.xml
首先建立一个用来存放数据的目录:mkdir /home/hadoop/hadoop-datastore
1)打开/home/hadoop/hadoop/conf/core-site.xml,配置如下:

点击(此处)折叠或打开

  1. <configuration>
  2.   <property>
  3.     <name>hadoop.tmp.dir</name>
  4.     <value>/home/hadoop/hadoop-datastore/</value>
  5.     <description>A base for other temporary directories.</description>
  6.   </property>
  7.  
  8.   <property>
  9.    <!--fs.default.name指定NameNode的IP地址和端口号-->
  10.     <name>fs.default.name</name>
  11.     <value>hdfs://localhost:54310</value>
  12.     <description>The name of the default file system. A URI whose
  13.   scheme and authority determine the FileSystem implementation. The
  14.   uri's scheme determines the config property (fs.SCHEME.impl) naming
  15.   the FileSystem implementation class. The uri's authority is used to
  16.   determine the host, port, etc. for a filesystem.</description>
  17.   </property>

2)打开/home/hadoop/hadoop/conf/mapred-site.xml,配置如下:

点击(此处)折叠或打开

  1. <configuration>
  2. <property>
  3.   <name>mapred.job.tracker</name>
  4.   <value>localhost:54311</value>
  5.   <description>The host and port that the MapReduce job tracker runs
  6.   at. If "local", then jobs are run in-process as a single map
  7.   and reduce task.
  8.   </description>
  9. </property>
  10. </configuration>

3)打开/home/hadoop/hadoop/conf/hdfs-site.xml,配置如下:

点击(此处)折叠或打开

  1. <configuration>
  2. <property>
  3. <!--block的副本数,默认为3;你可以设置为1 这样每个block只会存在一份。-->
  4.   <name>dfs.replication</name>
  5.   <value>1</value>
  6.   <description>Default block replication.
  7.   The actual number of replications can be specified when the file is created.
  8.   The default is used if replication is not specified in create time.
  9.   </description>
  10. </property>
  11. </configuration>

这样就配置完毕

五、启动Hadoop
1. 格式化HDFS:
首先建立一个用来存放数据的目录:mkdir /home/hadoop/hadoop-datastore
进入hadoop/bin目录:~$ hadoop namenode -format

成功情况下,系统将输出如下类似信息

出现诸如:has been successfully formatted 这样的信息,说明已格式化成功
注意:格式化只可以在最初安装时使用,使用过程中不可以再进行此步操作,除非重做hdfs文件系统

2.启动HDFS:
cd /home/hadoop/hadoop/bin
运行启动脚本:./start_all.sh
停止脚本为:./stop_all.sh

启动后通过jps查看进程是否启动成功:~/hadoop/bin$ jps
7180 TaskTracker
7029 JobTracker
6615 NameNode
7236 Jps
6791 DataNode
6939 SecondaryNameNode

出现如上信息,表示hadoop启动成功,这六个进程缺一不可。
netstat -at|grep 50030
netstat -at|grep 50070
查看端口是否正常
注意:有时候可能启动不成功,可以在/home/hadoop/hadoop/logs/查看日志信息进行诊断。
访问可以看到NameNode以及整个分布式文件系统的状态,浏览分布式文件系统中的文件以及日志等。
访问可以查看JobTracker的运行状态。
50070是dfs的端口,50030是MR的端口。


六、测试并运行Hadoop的wordcount程序
1)~$ hadoop fs -mkdir input
若是出现 mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hadoop/input. Name node is in safe mode.这样的错误
说明Hadoop的NameNode处在安全模式下。
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
只需键入命令: ~/hadoop/bin$ hadoop dfsadmin -safemode leave
出现:Safe mode is OFF 表明hdfs已离开了安全模式,可以进入下一步操作
2)~/hadoop/bin$ hadoop fs -ls
输出:Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2014-03-29 15:20 /user/hadoop/input

3)cd ..  (回到上一层目录)
     ~/hadoop$ hadoop fs -put NOTICE.txt README.txt input
     再敲命令: ~/hadoop$ hadoop fs -ls input
     输出:Found 2 items
-rw-r--r--   1 hadoop supergroup        101 2014-03-29 15:22 /user/hadoop/input/NOTICE.txt
-rw-r--r--   1 hadoop supergroup       1366 2014-03-29 15:22 /user/hadoop/input/README.txt
说明预统计次数的两个文件确实已放到input目录下
4)运行程序:~/hadoop$ hadoop jar hadoop-examples-1.2.1.jar wordcount input output
程序输出如下:

点击(此处)折叠或打开

  1. 14/03/29 15:23:42 INFO input.FileInputFormat: Total input paths to process : 2
  2. 14/03/29 15:23:42 INFO util.NativeCodeLoader: Loaded the native-hadoop library
  3. 14/03/29 15:23:42 WARN snappy.LoadSnappy: Snappy native library not loaded
  4. 14/03/29 15:23:43 INFO mapred.JobClient: Running job: job_201403291516_0001
  5. 14/03/29 15:23:44 INFO mapred.JobClient: map 0% reduce 0%
  6. 14/03/29 15:23:53 INFO mapred.JobClient: map 50% reduce 0%
  7. 14/03/29 15:23:54 INFO mapred.JobClient: map 100% reduce 0%
  8. 14/03/29 15:24:02 INFO mapred.JobClient: map 100% reduce 33%
  9. 14/03/29 15:24:04 INFO mapred.JobClient: map 100% reduce 100%
  10. 14/03/29 15:24:06 INFO mapred.JobClient: Job complete: job_201403291516_0001
  11. 14/03/29 15:24:06 INFO mapred.JobClient: Counters: 29
  12. 14/03/29 15:24:06 INFO mapred.JobClient: Job Counters
  13. 14/03/29 15:24:06 INFO mapred.JobClient: Launched reduce tasks=1
  14. 14/03/29 15:24:06 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=14627
  15. 14/03/29 15:24:06 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
  16. 14/03/29 15:24:06 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
  17. 14/03/29 15:24:06 INFO mapred.JobClient: Launched map tasks=2
  18. 14/03/29 15:24:06 INFO mapred.JobClient: Data-local map tasks=2
  19. 14/03/29 15:24:06 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=10325
  20. 14/03/29 15:24:06 INFO mapred.JobClient: File Output Format Counters
  21. 14/03/29 15:24:06 INFO mapred.JobClient: Bytes Written=1356
  22. 14/03/29 15:24:06 INFO mapred.JobClient: FileSystemCounters
  23. 14/03/29 15:24:06 INFO mapred.JobClient: FILE_BYTES_READ=2003
  24. 14/03/29 15:24:06 INFO mapred.JobClient: HDFS_BYTES_READ=1699
  25. 14/03/29 15:24:06 INFO mapred.JobClient: FILE_BYTES_WRITTEN=180692
  26. 14/03/29 15:24:06 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1356
  27. 14/03/29 15:24:06 INFO mapred.JobClient: File Input Format Counters
  28. 14/03/29 15:24:06 INFO mapred.JobClient: Bytes Read=1467
  29. 14/03/29 15:24:06 INFO mapred.JobClient: Map-Reduce Framework
  30. 14/03/29 15:24:06 INFO mapred.JobClient: Map output materialized bytes=2009
  31. 14/03/29 15:24:06 INFO mapred.JobClient: Map input records=33
  32. 14/03/29 15:24:06 INFO mapred.JobClient: Reduce shuffle bytes=2009
  33. 14/03/29 15:24:06 INFO mapred.JobClient: Spilled Records=284
  34. 14/03/29 15:24:06 INFO mapred.JobClient: Map output bytes=2200
  35. 14/03/29 15:24:06 INFO mapred.JobClient: Total committed heap usage (bytes)=321388544
  36. 14/03/29 15:24:06 INFO mapred.JobClient: CPU time spent (ms)=2520
  37. 14/03/29 15:24:06 INFO mapred.JobClient: Combine input records=190
  38. 14/03/29 15:24:06 INFO mapred.JobClient: SPLIT_RAW_BYTES=232
  39. 14/03/29 15:24:06 INFO mapred.JobClient: Reduce input records=142
  40. 14/03/29 15:24:06 INFO mapred.JobClient: Reduce input groups=134
  41. 14/03/29 15:24:06 INFO mapred.JobClient: Combine output records=142
  42. 14/03/29 15:24:06 INFO mapred.JobClient: Physical memory (bytes) snapshot=441929728
  43. 14/03/29 15:24:06 INFO mapred.JobClient: Reduce output records=134
  44. 14/03/29 15:24:06 INFO mapred.JobClient: Virtual memory (bytes) snapshot=2018881536
  45. 14/03/29 15:24:06 INFO mapred.JobClient: Map output records=190

5)运行完成后查看目录::~/hadoop$ hadoop fs -ls output
输出:Found 3 items
-rw-r--r--   1 hadoop supergroup          0 2014-03-29 15:24 /user/hadoop/output/_SUCCESS
drwxr-xr-x   - hadoop supergroup          0 2014-03-29 15:23 /user/hadoop/output/_logs
-rw-r--r--   1 hadoop supergroup       1356 2014-03-29 15:24 /user/hadoop/output/part-r-00000
说明结果确实已生成
查看具体结果:~/hadoop$ hadoop fs -cat output/part-r-00000
输出统计字数信息:

点击(此处)折叠或打开

  1. (BIS),    1
  2. (ECCN)    1
  3. (TSU)    1
  4. (http://www.apache.org/).    1
  5. (see    1
  6. 5D002.C.1,    1
  7. 740.13)    1
  8. <http://www.wassenaar.org/>    1
  9. Administration    1
  10. Apache    2
  11. BEFORE    1
  12. BIS    1
  13. Bureau    1
  14. Commerce,    1
  15. Commodity    1
  16. Control    1
  17. Core    1
  18. Department    1
  19. ENC    1
  20. Exception    1
  21. Export    2
  22. For    1
  23. Foundation    2
  24. Government    1
  25. Hadoop    1
  26. Hadoop,    1
  27. Industry    1
  28. Jetty    1
  29. License    1
  30. Number    1
  31. Regulations,    1
  32. SSL    1
  33. Section    1
  34. Security    1
  35. See    1
  36. Software    3
  37. Technology    1
  38. The    5
  39. This    2
  40. U.S.    1
  41. Unrestricted    1
  42. about    1
  43. algorithms.    1
  44. and    6
  45. and/or    1
  46. another    1
  47. any    1
  48. as    1
  49. asymmetric    1
  50. at:    2
  51. both    1
  52. by    2
  53. check    1
  54. classified    1
  55. code    1
  56. code.    1
  57. concerning    1
  58. country    1
  59. country's    1
  60. country,    1
  61. cryptographic    3
  62. currently    1
  63. details    1
  64. developed    1
  65. distribution    2
  66. eligible    1
  67. encryption    3
  68. exception    1
  69. export    1
  70. following    1
  71. for    3
  72. form    1
  73. from    1
  74. functions    1
  75. has    1
  76. have    1
  77. http://hadoop.apache.org/core/    1
  78. http://wiki.apache.org/hadoop/    1
  79. if    1
  80. import,    2
  81. in    1
  82. included    1
  83. includes    3
  84. information    2
  85. information.    1
  86. is    1
  87. it    1
  88. latest    1
  89. laws,    1
  90. libraries    1
  91. makes    1
  92. manner    1
  93. may    1
  94. more    2
  95. mortbay.org.    1
  96. object    1
  97. of    5
  98. on    2
  99. or    2
  100. our    2
  101. performing    1
  102. permitted.    1
  103. please    2
  104. policies    1
  105. possession,    2
  106. product    1
  107. project    1
  108. provides    1
  109. re-export    2
  110. regulations    1
  111. reside    1
  112. restrictions    1
  113. security    1
  114. see    1
  115. software    3
  116. software,    2
  117. software.    2
  118. software:    1
  119. source    1
  120. the    8
  121. this    3
  122. to    2
  123. under    1
  124. use,    2
  125. uses    1
  126. using    2
  127. visit    1
  128. website    1
  129. which    2
  130. wiki,    1
  131. with    1
  132. written    1
  133. you    1
  134. your    1

说明Hadoop已正确安装并运行成功。
下一篇将讨论配置eclipse下的Hadoop开发环境。



阅读(2095) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~