1准备工作
Jdk-6u16-linux-i586-rpm.bin
hadoop-1.2.1.tar.gz
fedora 18
VMware Workstation 9
2安装JDK
2.1卸载fedora 18自带的openjdk(因为其javac命令不能用)#yum –y remove java 全名
2.2安装Jdk-6u16-linux-i586-rpm.bin
#chmod +x jdk-6u16-linux-i586-rpm.bin
#./jdk-6u16-linux-i586-rpm.bin
然后ctrl+C翻页 选择yes
2.3配置/etc/profile(设置环境变量)
在done的后面、unset i的前面输入
#set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_16
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
2.4测试是否成功
#java –version
3.安装ssh
3.1 查看Fedora是否自带有openssh
如果出现
则说明linux自带有openssh
3.2修改配置文件
#vi /etc/ssh/sshd_config
#Port 22 监听的端口号,默认是22,可以自定义。
#Protocol 2 支持的协议,默认就好,不用修改
#PermitRootLogin yes 是否允许root直接登录,最好设置为no
#MMaxAuthTries 6 最大登录数,默认是6,建议设置为3,防止别人密码穷举。建议修改的#PermitRootLogin yes #MMaxAuthTries 6如下图修改
3.3修改完配置后,重启ssh服务。
systemctl restart sshd.service
查看systemctl status sshd.service
3.4设置系统启动时开启服务
# systemctl enable sshd.service
3.5建立ssh无密码登录:
在namenode上面实现无密码登录:
#ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_keys 文件 ) :
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
完成后可以实现无密码录本机: #ssh localhost
4、安装hadoop
4.1下载hadoop-1.2.1.tar.gz,
解压:tar -zvxf hadoop-1.2.1.tar.gz
4.2配置hadoop:
hadoop 的主要配置都在 hadoop-1.2.1 /conf 下。
(1) 在 conf/hadoop-env.sh 中配置 Java 环境
export JAVA_HOME=jdk的路径
(2) 配置 conf/core-site.xml, conf/hdfs-site.xml 及 conf/mapred-site.xml
core-site.xml的配置
<configuration>
<property>
<name> fs.default.name </name>
<value> hdfs://localhost:9000 </value>
</property>
</configuration>
hdfs-site.xml的配置 ( replication 默认为 3 ,如果不修改, datanode 少于三台就会报错)
<configuration>
<property>
<name> dfs.replication </name>
<value> 1 </value>
</property>
</configuration>
mapred-site.xml的配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value> localhost:9001 </value>
</property>
</configuration>
4.3 配置完成后
(1)格式化文件系统 #bin/hadoop namenode – format
(2)启动hadoop:bin/start-all.sh
(3)用jps命令查看进程
到此配置完毕。
5在hadoop上运行wordcount任务
查看输出结果
bin/hadoop dfs –cat output2/*