需要纯净的三个虚拟机,建议内存大小为1024M,注意要将时间、解析配置成一致,防火墙、SElinux关闭。使用nfs进行同步。
若过程中获得警告,可能是由于编译环境32位或jdk版本过低的原因
1.安装和配置环境
所需软件包:hadoop-1.2.1.tar.gz jdk-6u32-linux-x64.bin
【server1/server2/server3】
useradd -u 900 hadoop echo westos | passwd --stdin hadoop
【server1】
sh jdk-6u32-linux-x64.bin mv jdk1.6.0_32/ /home/hadoop/java mv hadoop-1.2.1.tar.gz /home/hadoop/
su - hadoop tar zxf hadoop-1.2.1.tar.gz ln -s hadoop-1.2.1 hadoop
vim .bash_profile
修改环境变量为以下内容:
export JAVA_HOME=/home/hadoop/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
source .bash_profile echo $JAVA_HOME
cd /home/hadoop/hadoop/conf
vim hadoop-env.sh
修改第9行,修改Java的目录
9 export JAVA_HOME=/home/hadoop/java
jps ##查看Java运行的进程,当前无
cd .. mkdir input cp conf/*.xml input/ ls input/ ##一些测试文件
bin/hadoop jar hadoop-examples-1.2.1.jar grep input out ‘dfs[a-z.]+‘ ##在input过滤dfs开头的文件在output输出
ls out/ cat out/*
2.分布式文件系统
cd /home/hadoop/hadoop/conf cat masters cat slaves
ssh localhost ##需要密码,要实现无密码登陆
ssh-keygen ssh-copy-id localhost
测试:
ssh localhost ssh 172.25.19.1 ssh server1.example.com
测试是否可以进行无密码登陆
cd /home/hadoop/hadoop/conf
vim core-site.xml
添加内容如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://172.25.19.1:9000</value>
</property>
</configuration>
vim mapred-site.xml
添加内容如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>172.25.19.1:9001</value>
</property>
</configuration>
vim hdfs-site.xml
添加内容如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
cd /home/hadoop/hadoop/ bin/hadoop namenode -format ##格式化 ls /tmp ##放在/tmp下
#bin/start-all.sh ##也可以用此命令开启所有服务
bin/start-dfs.sh ##开启分布式 jps
bin/start-mapred.sh jps
http://172.25.19.1:50030
http://172.25.19.1:50070
bin/hadoop fs
bin/hadoop fs -put input test ##上传
上传文件的存放目录为/usr/hadoop/,此目录会自动建立
bin/hadoop fs -ls test
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount test output ##计算字数
bin/hadoop fs -ls out/
bin/hadoop fs -cat out/*
bin/hadoop fs -get out test##将out下载本地查看 cat test/*
以上都可以在网页中查看,并可以查看任务进度
3.完整分布式文件系统
【server1/server2/servre3】
在root用户下
yum install -y nfs-utils /etc/init.d/rpcbind start
【server1】
/etc/init.d/nfs start
vim /etc/exports
添加以下内容:
/home/hadoop *(rw,all_squash,anonuid=900,anongid=900)
exportfs -rv exportfs -v
【server2/server3】
showmount -e 172.25.19.1 mount 172.25.19.1:/home/hadoop/ /home/hadoop/ df su - hadoop
【server1】
su - hadoop
##检测无密码认证
ssh 172.25.19.2 logout ssh 172.25.19.3 logout
jps ##进程都开着
bin/stop-all.sh jps##tasktracker datanode 没有被关掉 bin/hadoop-daemon.sh stop tasktracker##手动关闭 bin/hadoop-daemon.sh stop datanode jps ##查看是否被完全关闭(只剩下一个JPS)
cd conf/
vim hdfs-site.xml
把1改为2
vim slaves
添加以下内容:
172.25.19.2
172.25.19.3
vim masters
添加以下内容:
172.25.19.1
bin/hadoop namenode -format ##注意(Y/N)选项是大写
bin/start-dfs.sh jps
此时,在server2/server3上执行jps,DataNode进程运行
bin/start-mapred.sh jps
此时,server2/server3上执行jps,TaskTracker进程运行
【serve2/server3】
jps
网页
格式化后,先前上传的文件消失
两个节点
测试:
bin/hadoop fs -put input/ test ##主从节点都可以上传,但最好在主节点上传
bin/hadoop jar hadoop-examples-1.2.1.jar grep test output ‘dfs[a-z].+‘
bin/hadoop dfsadmin -report
dd if=/dev/zero of=bigfile bs=1M count=100 bin/hadoop fs -put bigfile test2
bin/hadoop dfsadmin -report
添加一个节点,再增加一个虚拟机
【server4】
useradd -u 900 hadoop echo westos | passwd --stdin hadoop
yum install -y nfs-utils /etc/init.d/rpcbind start
showmount -e 172.25.19.1 mount 172.25.19.1:/home/hadoop/ /home/hadoop/ df
su - hadoop
cd /home/hadoop/hadoop/conf
vim slaves
添加一个节点:172.25.19.4
cd .. bin/hadoop-daemon.sh start datanode jps
bin/hadoop-daemon.sh start tasktracker jps
【serevr1】
bin/hadoop dfsadmin -report
cd /home/hadoop/hadoop/conf
vim mapred-site.xml
添加以下内容:
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop/conf/datanode-excludes</value>
</property>
vim /home/hadoop/hadoop/conf/datanode-excludes
添加要删除节点的IP
bin/hadoop dfsadmin -refreshNodes
bin/hadoop dfsadmin -report
bin/hadoop dfsadmin -report
【server3】
jps
bin/hadoop-daemon.sh stop tasktracker jps
二、新版本
软件包:hadoop-2.6.4.tar.gz jdk-7u79-linux-x64.tar.gz
【server1】
cd conf vim slaves
删掉关闭的节点
cd .. bin/stop-all.sh jps
【server1/server2/server3/server4】
rm -rf /tmp/*
【server1】
mv java/ jdk-1.6.32 tar zxf jdk-7u79-linux-x64.tar.gz ln -s jdk1.7.0_79 java
logout su - hadoop
java -version
rm -rf hadoop tar zxf hadoop-2.6.4.tar.gz ln -s hadoop-2.6.4 hadoop
cd /home/hadoop/hadoop/etc/hadoop
vim hadoop-env.sh
修改25行并添加以下内容:
25 export JAVA_HOME=/home/hadoop/java
26 export HADOOP_PREFIX=/home/hadoop/hadoop
cd /home/hadoop/hadoop/
bin/hadoop ##成功安装
mkdir input cp etc/hadoop/*.xml input/ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z].+‘ cat output/*
有一个警告
解决方法:安装hadoop-native-64-2.6.0.tar
tar -xf hadoop-native-64-2.6.0.tar -C hadoop/lib/native/ cd hadoop rm -rf output/ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z].+‘##解决警告
cd /home/hadoop/hadoop/etc/hadoop
vim slaves
删掉localhost,添上节点的IP
172.25.19.2
172.25.19.3
vim core-site.xml
修改内容为以下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.25.19.1:9000</value>
</property>
</configuration>
vim hdfs-site.xml
修改内容为以下:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
cd /home/hadoop/hadoop bin/hdfs namenode -format ##格式化
sbin/start-dfs.s
jps
server2/server3 jps
此时目录为空,且新本版不会自己建立目录,所以无法直接上传,需要先建立目录
bin/hdfs dfs -mkdir /user/ bin/hdfs dfs -mkdir /user/hadoop
测试:
bin/hdfs dfs -put input/ test
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep test output ‘dfs[a-z].+‘
bin/hdfs dfs -cat output/*
cd /home/hadoop/hadoop/etc/hadoop vim yarn-site.xml
添加以下内容:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>server1.example.com</value>
</property>
</configuration>
sbin/start-yarn.sh
jps
server2/server3 jps