1.这里准备三台虚拟机用来搭建hadoop集群。java
10.118.213.211 secms-tomcat211
10.118.213.212 secms-tomcat212
10.118.213.216 secms-tomcat216node
其中211做为master。vim
2.安装JDK,这里版本为1.8。tomcat
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_151 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin
3.配置hosts文件服务器
vim /etc/hosts
192.168.1.111 master01 192.168.1.112 slaveone02 192.168.1.113 slaveone03
4.创建hadoop帐号ssh
useradd hadoop 建立用户hadoop passwd hadoop 给已建立的用户设置密码
5.设置ssh免密码登陆oop
经过hadoop帐号登录到secms-tomcat211上,在/home/hadoop目录下执行命令:测试
ssh-keygen -t rsa
屡次回车以后在/home/hadoop/.ssh目录下产生id_rsa和id_rsa.pub文件。在其余主机上面使用一样方式产生秘钥文件。spa
在secms-tomcat211上面使用以下命令3d
cat id_rsa.pub >> authorized_keys
将id_rsa.pub公钥内容拷贝到authorized_keys文件中。
登陆其余主机,将其余主机的公钥文件内容都拷贝到secms-tomcat211主机上的authorized_keys文件中。
命令以下:
ssh-copy-id -i secms-tomcat211
查看secms-tomcat211主机上的authorized_keys文件内容
cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwioob4cnpLc+OyqE3i4gX718HNf80c7gQcA+Kpmta4Rk/n/kbmYT83h4XoeMVMBZ9h5/t5uvmetF+/dMIa7DJKz0cTXvwa4XYH0rV7vnL+Kpx57pWbiLNGI1SogG6sp85xlTZ8Se8Fxr3V77to6VoonU5aUa6nWY4SPhCf7iBcSFnnEwC0H98UQpRmajZyYZrenLrlHtGkA1X5fEcTiRGeQsPzkHDQ6Vjkc24HDfLH1ojDLIh+M4CcFiixxyEeTxBLuRHM0DQqPT0oIeT066bnzmPEXLjfHueiTQJqg9lpFxOP+1GUtBHhvgzszRjscH0S9EiRl1ZgBl7tRFZoDKIw== hadoop@secms-tomcat211 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs/YEWUC5/TIIHEMvD3LlpQXAiBPhX3LIsjl4lKKuLduyzhhiRy93T5htCToldoXgeIzDD8T0/eOg9ATm/MJ2FJ6lS56RpI5eCuq/QKxz0b+ocKsOfnaYEXsx6V4O1x5dgU/5h+yeNR+hLJjyTm5Frh8LKUJYj0kx+WgL37Yv/0WTf9wtdF8htjIu5hupSqXyi7eK/wRqyKzNChG78YMKXCmjJyMML+s1BnOLwcU/rYIiICdDJi8g44C3H8qQMCEQFfVySOvWFHYW2MCpIARC2jaemabYRkgInekNu+EYgKo9HtKbbMVCU9X+tPcxw+NWx/TAtHVbWghIuO2rJJW+Tw== hadoop@secms-tomcat212 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArsOs0oMen1oUPz6cSZfV79EaMBIJr3P3R6Ju2ooYNFO3qx212Zz1kCtcmIsBs/qLksU1mtak35o4hdR4H4KBWLZ2E6jBj09rDapt0Z6vJsCkTtR+YC/+olrybaGNkRJn5WlzIh+MSZY+6MTlzX/YHrnjJH6D0LV+vALi4MrxtOflBPG+xJTCQ3df0eEIaYFw9xYZDjhsttzJHl6N7KyQf1qYWIEwaN8CmKYhPD1NwP/5xKnRTuEVwiQN5PXkzAw9hgdvkKRUOsDfePxJrkJVpIzktS84IeiwxcefEanqLOmoB+lSCpaJpXfzs7Zew7girFxUE/ORpO64bTRyr2LsNQ== hadoop@secms-tomcat216
受权authorized_keys文件
chmod 600 authorized_keys
将authorized_keys拷贝到secms-tomcat212和secms-tomcat216上面。
scp /home/hadoop/.ssh/authorized_keys secms-tomcat212:/home/hadoop/.ssh/ scp /home/hadoop/.ssh/authorized_keys secms-tomcat216:/home/hadoop/.ssh/
至此,免密码登陆已经设定完成,注意第一次ssh登陆时须要输入密码,再次访问时便可免密码登陆。
1.下载hadoop压缩包hadoop-2.7.5.tar.gz,拷贝到/home/hadoop/目录下进行解压。
2.配置hadoop环境变量
export HADOOP_HOME=/home/hadoop/hadoop-2.7.5 export JAVA_HOME=/usr/java/jdk1.8.0_151 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
3.建立文件目录
给Master上面hdfs的NameNode、DataNode及临时文件。并使用scp命令将新建的文件夹目录拷贝到其余主机上面。
/home/hadoop/hdfs/data /home/hadoop/hdfs/name /home/hadoop/hdfs/tmp
4.配置slaves文件
slaves文件中指定Datanode的节点
secms-tomcat212 secms-tomcat216
5.配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://secms-tomcat211:8020</value>//这里配置主节点 </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hdfs/tmp</value>//运行产生的临时数据文件存放位置 </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value>//备份2分 </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hdfs/data</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> //mapreduce使用yarn来调度 <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>secms-tomcat211</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
将配置文件拷贝到其余主机上面
//拷贝到secms-tomcat216 scp core-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp hdfs-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp mapred-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp yarn-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ //拷贝到secms-tomcat216 scp core-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp hdfs-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp mapred-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp yarn-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/
6.修改hadoop-env.sh中jdk路径
export JAVA_HOME=/usr/java/jdk1.8.0_151
7.关闭主机上面的防火墙
service iptables stop
8.格式化namenode
在secms-tomcat211上面执行
bin/hdfs namenode -format
提示(成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错)。
9.启动NameNode 和 DataNode进程
在master节点执行启动命令:
sbin/start-dfs.sh
执行jps查看启动状况
29121 SecondaryNameNode 28914 NameNode 30681 Jps
分别在secms-tomcat2十二、secms-tomcat216执行jps查看启动状况
6474 DataNode 8250 Jps
hdfs监控界面:http://10.118.213.211:50070/
10.启动ResourceManager 和 NodeManager 进程
ResourceManager管理总资源分配
NodeManager管理该台节点资源
在master上面执行命令:
sbin/start-yarn.sh sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行
yarn界面:http://10.118.213.211:8088
注:关闭yarn时执行命令
sbin/stop-yarn.sh sbin/mr-jobhistory-daemon.sh stop historyserver
若是不想启动 YARN,务必把配置文件 mapred-site.xml 重命名,改为 mapred-site.xml.template,
须要用时改回来就行。不然在该配置文件存在,而未开启 YARN 的状况下,
运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,
这也是为什么该配置文件初始文件名为 mapred-site.xml.template。
1.测试文件
新建测试文件vim words
hello a
world b
hello c
jiafeng b
sean a
2.上传文件到hdfs中
//上传命令 //文件路径 //hdfs中文件路径 bin/hadoop fs -put /home/hadoop/words /words
3.运行测试文件
//程序所在jar包 //统计词频例子 //数据路径 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /words /words_out (输出路径)
4.查看结果
bin/hadoop fs -ls / bin/hadoop fs -ls /words_out bin/hadoop fs -cat /words_out/part-r-00000
结果显示
a 2 b 2 c 1 hello 2 jiafeng 1 sean 1 world 1