1 环境准备
A 机器/ip准备 4台虚拟机,Centos6.4系统
vim /etc/sysconfig/network,修改对应的hostname分别为namenode,datanode1,datanode2,datanode3
并将下面的内容写入每台机器的/etc/hosts
192.168.247.129 namenode
192.168.249.130 datanode1
192.168.249.131 datanode2
192.168.249.132 datanode3
B 建立用户(组)及数据目录
建立用户及用户组
groupadd hadoop
useradd -g hadoop hadoop
修改权限
chmod u+w /etc/sudoers
vim /etc/sudoers 找到root ALL=(ALL:ALL) ALL,在其下面加入 hadoop ALL=(ALL:ALL) ALL
chmod u-w /etc/sudoers
建立相应目录
namenode
mkdir /data/hadoop
mkdir /data/hadoop/name
mkdir /data/hadoop/tmp
chown -R hadoop:hadoop /data/hadoop
datanode
mkdir /data/hadoop
mkdir /data/hadoop/data
mkdir /data/hadoop/tmp
chown -R hadoop:hadoop /data/hadoop
C 配置ssh免密钥
让各机器之间能ssh免密钥登录,注意是针对hadoop用户。
---------以下操作,每台机器都进行-----------------―-
su hadoop
cd #切到用户目录
ssh-keygen -t rsa #一路回车即可
------------------------------------------------
上面的操作将会在~/.ssh目录下生成id_rsa私钥和id_rsa.pub公钥文件
将所有机器的id_rsa.pub文件里面的公钥串拷贝到~/.ssh/authorized_keys文件中
然后将authorized_keys分发到各台机器的~/.ssh/目录中。
测试验证……
D 安装jdk
cd /usr/java #没有java文件夹 新建一个
下载jdk-8u5-linux-x64.rpm jdk文件到此目录下,注意jdk版本需要1.6及以上。
rpm -ivh jdk-8u5-linux-x64.rpm
将下面加入到/etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行source /etc/profile
java -version 测试
2 hadoop配置及安装
A下载安装
官网放出的安装版本都针对32位系统的,所以要注意如果你的系统是64位,需要在64位系统下重新编译安装包。
http://down.51cto.com/data/1078830 这里有编译好的64位的版本。
解压安装包,并将其移到/usr/local中
tar zxvf hadoop-2.2.0.gz
mv hadoop_xx /usr/local/
chown -R hadoop:hadoop /usr/local/hadoop-2.2.0
B 在namenode上修改配置文件
su hadoop
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh 修改JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_45
core-site.xml
<configuration>
<property>
<name>fs.default.name</name> //namenode的配置,机器名加端口;
<value>hdfs://192.168.247.129:11111</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name> //JobTracker的配置,机器名加端口;
<value>namenode:11112</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name> //Namenode持久存储名字空间及事务日志的本地文件系统路径;
<value>/data/hadoop/name</value>
</property>
<property>
<name>hadoop.tmp.dir</name> //Hadoop的默认临时路径是在/tmp下,最好进行配置,如果不配
<value>/data/hadoop/tmp/</value>//置,机器重启后需要执行NameNode格式化的命令;
</property>
</configuration>
vim masters
192.168.247.129
vim slaves
192.168.249.130
192.168.249.131
192.168.249.132
注:masters文件用于指定secondary的主机而不是namenode,slaves用于指定datanode和tasktracker,
C 将程序文件拷入到各个datanode中
su root
cd /usr/local
scp -rp hadoop-xx [email protected]:/usr/local
root登录到datanode,修改程序文件用户
chown -R hadoop:hadoop /usr/local/hadoop-2.2.0
su hadoop
cd /usr/local/hadoop-2.2.0/etc/hadoop
修改hdfs-site.xml
<property>
<name>dfs.data.dir</name> //DataNode存放块数据的本地文件系统路径,逗号分隔的列表
<value>/data/hadoop/data</value> //注意不同之处在此
</property>
3 hadoop运行
cd /usr/loca/hadoop-2.2.0/bin
./hadoop namenode -format #如果有报错,请处理
cd /usr/local/hadoop-2.2.0/sbin
./start_all.sh
开始运行后通过网页的可以查看相关信息
http://192.168.247.129:50070
http://192.168.247.129:50030
jps #java自带查看进程的命令
#此版本与以往版本不一样,namenode是看不到jobtracker进程,datanode看不到tasktracker进程
4 hdoop执行测试任务
su hadoop
cd /home/hadoop/
mkdir input
echo ‘hello world’ > input/test1.txt #准备数据
echo ‘hello hadoop’ > input/test2.txt
/usr/local/hadoop-2.2.0/bin/hdfs dfs -put input/ /in #导入数据
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /in/
/usr/local/hadoop-2.2.0/bin/hadoop jar /usr/local/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /in /out #执行job
/usr/local/hadoop-2.2.0/bin/hdfs dfs -ls /out/
/usr/local/hadoop-2.2.0/bin/hdfs dfs -cat /out/*
hadoop1
hello2
world1