环境:CentOS7+Hadoop2.6.4
一、分3类
1、单机环境搭建
2、伪分布式搭建
3、真分布式搭建
二、单机环境搭建
2.1、下载 用迅雷下载贼快。
2.2、将tar拷贝到CentOS的/home目录下,我放的是/home/germmy,这里用xshell或者winscp均可以,我用的是winscp
2.3、将tar包解压到/usr/local中,命令如下
tar -zxvf /home/germmy/hadoop-2.6.4.tar.gz -C /usr/local/
2.4、将hadoop命令配置到环境变量中,这样在控制台中直接输入hadoop就可以快捷操作。
进入环境变量配置页面
vi /etc/profile
先配置HADOOP_HOME,再在path后面加上/bin
HADOOP_HOME=/usr/local/hadoop-2.6.4/PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
注:bin代表的是hadoop的一些操作,sbin表示的是hadoop的起停。
2.4.1、配置好后需要当环境变量生效,如下命令
source /etc/profile
2.5、测试有没有配置好。用hadoop version或者where hadoop.
2.5.1、hadoop version显示如下
2.5.2、which hadoop显示如下
2.6、运行wordcount程序。计算某目录下所有文件中每个单词出现的次数
2.6.1、在/home/germmy下新建目录input,并将hadoop/etc/下面所有.xml文件拷贝过去
cp ./etc/hadoop/*.xml /home/germmy/input/
2.6.1、执行代码
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /home/germmy/input/ /home/germmy/output
2.6.2 结果如下
2.6.3、查看一下output目录里面的part-r-00000文件如下图
2.6.3 会报一个错误:ebadf bad file descriptor hadoop,不过不要紧,这是由于文件被快速关闭的情况下就会出现这个问题,网上查了说没事
2.7 运行寻找统计符合特定规则的单词的程序
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep /home/germmy/input/ /home/germmy/output2 'dfs[a-z.]+'
结果同上面差不多,就不再赘述了。
三、伪分布式搭建(略)
四、分布式搭建
4.1、机器准备
4.1.1、搭建另外2台hadoop机器
a)克隆。这个比较简单。注意:被克隆的机器要处于关闭状态
b)起来后进来配置
b.1)修改机器名(reboot才能生效)。
vi /etc/hostname
b.2)修改IP,改成静态的,命令如下
vi /etc/sysconfig/network-scripts/ifcfg-ens33
完成的效果如下:
TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no#hadoop config startBOOTPROTO=staticIPADDR=192.168.92.203BROADCAST=192.168.92.255NETMAST=255.255.255.0GATEWAY=192.168.92.2DNS1=192.168.92.2#hadoop config endDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=f0a0731d-5dde-4961-b5bf-a958d204d5b9DEVICE=ens33ONBOOT=yes
注意:
1>重点关注区域是#hadoop config start~end的范围,这里只要将IPADDR改成192.168.92.20X即可
2>不需要特别配置网卡,即MAC地址。在克隆的机器启动后,vmware会自动给他分配一个新的mac.
3>配置完后,要重启网卡,用service network restart.在宿主机中能ping通,搞定。
b.3)修改本地host
192.168.92.201 hadoop01192.168.92.202 hadoop02192.168.92.203 hadoop03
4.2、配置hadoop01。
主要是配置各种xml文件
4.2.1、配置hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_162
注意:在hadoop-env.sh要再配置一下JAVA_HOME,否则namenode启动时就会报JAVA_HOME找不到的错误
4.2.2、配置core-site.xml
fs.defaultFS hdfs://hadoop01:9000 io.file.buffer.size 4096 hadoop.tmp.dir /home/bigdata/tmp
4.2.3、hdfs-site.xml
dfs.replication 2 dfs.block.size 134217728 dfs.namenode.name.dir /home/hadoopdata/dfs/name dfs.datanode.data.dir /home/hadoopdata/dfs/data fs.checkpoint.dir /home/hadoopdata/checkpoint/dfs/cname dfs.http.address hadoop01:50070 dfs.secondary.http.address hadoop01:50090 dfs.webhdfs.enabled false dfs.permissions false
4.2.4、配置yarn-site.xml.需要将yarn-site.templae.xml改名成yarn-site.xml
yarn.resourcemanager.hostname hadoop01 yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.address hadoop01:8032 yarn.resourcemanager.scheduler.address hadoop01:8030 yarn.resourcemanager.resource-tracker.address hadoop01:8031 yarn.resourcemanager.admin.address hadoop01:8033 yarn.resourcemanager.webapp.address hadoop01:8088
4.2.5、配置slaves。路径是:./etc/hadoop/slaves
hadoop01hadoop02hadoop03
4.2.6、将hadoop01配置好的hadoop全部复制到hadoop02、hadoop03中。
scp -r /usr/local/hadoop-2.6.4/ hadoop02:/usr/local/scp -r /usr/local/hadoop-2.6.4/ hadoop03:/usr/local/
注:最爽的当然是提前配置好免密登录,否则输密码输死你
4.3、格式化hdfs
hadoop namenode -format
4.4、启动dfs.
start-dfs.sh
注:因为提前将hadoop/sbin配置到了path环境变量中,所以这里可以直接输入start-dfs.sh
4.4.1、测试hadoop01的启动情况。用jps命令
如果能看到NameNode,DataNode表示正常。
4.4.2、看一下datanode02的启动情况。
4.4.3、datanode03,同02,不赘述了。
4.5、上传下载文件,测试hdfs.
4.5.1、上传。用命令如下
hdfs dfs -put ./README.txt /
4.5.2、查看。用命令如下
hdfs dfs -cat /README.txt
效果如下
4.6、启动测试yarn命令如下:
start-yarn.sh
4.6.1、hadoop01机器上jps一下
4.6.2、hadoop02机器上jps一下
注:jps时可能会出现Java异常,报Properties init的错误,我就看了一下logs/****.out和***.log文件,啥也没干,再次Jps竟然又好了,没搞懂。
4.5.3、hadoop03和02一样,不赘述。
4.7、测试yarn.
启动一个计数器,命令如下
yarn jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /README.txt /out/00
解释:
/README.txt代表源,代表谁要被word count
/out/00,这个表示统计完了后,结果放在hdfs中的哪里
4.7.1、查看hdfs的/out/00目录,命令如下
hdfs dfs -cat /out/00/part-r-00000
4.7.2、结果如下
五、web监控截图
5.1、hdfs web监控页面(端口:50070)
5.2、yarnweb监控页面(端口:8088)
六、异常解决
exitcodeexception exitcode=1
是因为jobhistory的服务器没有配置正确,我是从别地拷贝过来的,改完后问题解决,
七、总结
总的来说,hadoop集群还是非常简单的,比想像中的简单的多。
因为它安装是纯绿色的,解压下来就能用。然后就是改改基础配置,IP改成固定的,机器名、免登录什么的。再然后就是改改xml配置,改好后同步给另外2台slave机器,真的是简单爆了。
但hadoop集群好像不太稳定,跑的时候总是动不动出个小错误,不知道什么鬼。