需要纯净的三个虚拟机,建议内存大小为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

(?)企业部分之hadoop_hadoop

 

source .bash_profile
echo $JAVA_HOME

(?)企业部分之hadoop_hadoop_02

 

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/    ##一些测试文件

(?)企业部分之hadoop_Hadoop_03


bin/hadoop jar hadoop-examples-1.2.1.jar grep input out 'dfs[a-z.]+'    ##在input过滤dfs开头的文件在output输出


ls out/
cat out/*

(?)企业部分之hadoop_hadoop_04

 

 

2.分布式文件系统

cd /home/hadoop/hadoop/conf
cat masters 
cat slaves

(?)企业部分之hadoop_hadoop_05

 

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下

(?)企业部分之hadoop_Hadoop_06

 

#bin/start-all.sh    ##也可以用此命令开启所有服务


bin/start-dfs.sh    ##开启分布式
jps

(?)企业部分之hadoop_Hadoop_07

bin/start-mapred.sh
jps

(?)企业部分之hadoop_hadoop_08


http://172.25.19.1:50030

(?)企业部分之hadoop_Hadoop_09


http://172.25.19.1:50070

(?)企业部分之hadoop_Hadoop_10


bin/hadoop fs(?)企业部分之hadoop_hadoop_11


bin/hadoop fs -put input test    ##上传


上传文件的存放目录为/usr/hadoop/,此目录会自动建立

(?)企业部分之hadoop_hadoop_12 

bin/hadoop fs -ls test

(?)企业部分之hadoop_hadoop_13


bin/hadoop jar hadoop-examples-1.2.1.jar wordcount test output    ##计算字数


(?)企业部分之hadoop_Hadoop_14

bin/hadoop fs -ls out/

(?)企业部分之hadoop_hadoop_15


(?)企业部分之hadoop_hadoop_16


(?)企业部分之hadoop_Hadoop_17


bin/hadoop fs -cat out/*

(?)企业部分之hadoop_hadoop_18


bin/hadoop fs -get out test##将out下载本地查看
cat test/*

(?)企业部分之hadoop_hadoop_19 


以上都可以在网页中查看,并可以查看任务进度

 

 

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

(?)企业部分之hadoop_Hadoop_20

server2/server3

showmount -e 172.25.19.1
mount 172.25.19.1:/home/hadoop/ /home/hadoop/
df
su - hadoop

(?)企业部分之hadoop_Hadoop_21

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

(?)企业部分之hadoop_hadoop_22

此时,在server2/server3上执行jpsDataNode进程运行

 

bin/start-mapred.sh
jps

(?)企业部分之hadoop_hadoop_23

此时,server2/server3上执行jpsTaskTracker进程运行

 

serve2/server3

jps

(?)企业部分之hadoop_hadoop_24

(?)企业部分之hadoop_hadoop_25

 

网页

格式化后,先前上传的文件消失

(?)企业部分之hadoop_Hadoop_26

两个节点

(?)企业部分之hadoop_Hadoop_27

测试:

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

(?)企业部分之hadoop_hadoop_28

 

dd if=/dev/zero of=bigfile bs=1M count=100
bin/hadoop fs -put bigfile test2

(?)企业部分之hadoop_Hadoop_29

 (?)企业部分之hadoop_Hadoop_30


bin/hadoop dfsadmin -report

(?)企业部分之hadoop_hadoop_31

 

添加一个节点,再增加一个虚拟机

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

(?)企业部分之hadoop_hadoop_32


bin/hadoop-daemon.sh start tasktracker
jps

(?)企业部分之hadoop_Hadoop_33

serevr1

bin/hadoop dfsadmin -report

(?)企业部分之hadoop_Hadoop_34

 

cd /home/hadoop/hadoop/conf
vim mapred-site.xml

添加以下内容:

        <property>

                <name>dfs.hosts.exclude</name>

                <value>/home/hadoop/hadoop/conf/datanode-excludes</value>

        </property>

(?)企业部分之hadoop_hadoop_35

 

vim /home/hadoop/hadoop/conf/datanode-excludes

添加要删除节点的IP

 

bin/hadoop dfsadmin -refreshNodes
bin/hadoop dfsadmin -report

(?)企业部分之hadoop_hadoop_36


(?)企业部分之hadoop_Hadoop_37


bin/hadoop dfsadmin -report

(?)企业部分之hadoop_hadoop_38

 

server3

jps

(?)企业部分之hadoop_Hadoop_39


bin/hadoop-daemon.sh stop tasktracker
jps

(?)企业部分之hadoop_hadoop_40


(?)企业部分之hadoop_Hadoop_41


 

二、新版本

 

软件包: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

(?)企业部分之hadoop_Hadoop_42 


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    ##成功安装

(?)企业部分之hadoop_hadoop_43

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_hadoop_44

解决方法:安装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

(?)企业部分之hadoop_hadoop_45


jps

(?)企业部分之hadoop_Hadoop_46

 

server2/server3 jps

(?)企业部分之hadoop_Hadoop_47

 

(?)企业部分之hadoop_Hadoop_48


(?)企业部分之hadoop_hadoop_49


此时目录为空,且新本版不会自己建立目录,所以无法直接上传,需要先建立目录

 

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].+'

(?)企业部分之hadoop_hadoop_50

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

(?)企业部分之hadoop_hadoop_51

 

server2/server3 jps

(?)企业部分之hadoop_hadoop_52


(?)企业部分之hadoop_Hadoop_53