1.安装java 配置java环境变量。略。
2.确保ssh服务,sshd服务开启。
使用下列命令查看。
ps -ef | grep ssh
ps -ef | grep sshd
注意需要开启远程登录服务(最好选择仅某些用户可以登录,确保安全。)
另外,在安装hadoop前,最好创建一个新用户,把该hadoop用户加入远程登录名单,并且登录该用户执行安装操作。如果有需要使用sudo,切换管理员用户即可。
生成密钥
3.安装hadoop。
到hadoop官网下载最新版。
(注意 研究源码的下载src版,普通开发下载tar.gz即可,包含了很多打好的jar包,Size比较大。)
下载后,解压到自己的文件夹中。配置环境变量到.bash_profile文件中。该文件没有的话可以自己创建。
下面是我的路径。
加入后路径还未生效。执行source .bash_profile 后用$HADOOP_HOME可以查看对应的路径。
到此为止,hadoop命令已经生效了。执行hadoop 可以看到下面一串说明:
4. 单机模式简介
以单词统计的mapreduce为例,注意:新版的hadoop把它放在hadoop-2.4.0/share/hadoop/mapreduce文件中。
input为输入数据文件夹。output为输出数据文件夹。
我们可以通过修改代码,重新编译,打包,运行。来得到不同的词频展示等效果。
5. 伪分布式模式的文件配置。
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/username/hadoop-2.4.0/tmp</value>
</property></span>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/Users/username/hadoop-2.4.0/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/Users/username/hadoop-2.4.0/hdfs/datanode</value>
</property>
</configuration>
mapred-site.xml <configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</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>yarn.nodemanager.resource.memory-mb</name>
<value>40960</value>
</property>
</configuration>
注意:启动前要先执行一个命令来格式化HDFS. 若没有执行该命令会导致namenode启动失败。
hadoop namenode -format
6.hadoop伪分布式模式启动和退出。
启动
此时登上网页http://localhost:50070 可以看到:
启动hadoop以后,我们可以在这上面做一些任务,比如上面的单词统计,开启一些job等。
任务执行的数据结果我们既可以在本地获取到,也可以从网页上下载。
关闭hadoop
7.遇到的问题。
另外还有一个就是服务器端密钥重新生成后,客户端去访问报错的问题。主要是因为第一次连接时,会生成一个认证存储在客户端known_host中。若是服务器钥匙更换了,这时客户端用known_host中记录的钥匙去比对,二者不相符,出错。这时要使用命令 ssh-keygen -R ip(这个要用服务器ip. 若是本地,用localhost) 更新认证后,重新访问,就正常了。