![b988c0573ad76a6448919f7786140ab8.png](https://i-blog.csdnimg.cn/blog_migrate/47da3cabc79320d238877419a5d940d1.jpeg)
Hadoop伪分布式和分布式集群的搭建,一些心得体会,便于查阅
本文主要写Hadoop伪分布式的搭建
![b6f98b6c0799f30cb3b22c410be7315a.png](https://i-blog.csdnimg.cn/blog_migrate/9f808e7241b9d521f2029fcd85ab4c29.jpeg)
一、安装hadoop
将解压缩的hadoop和jdk放入/root/app目录下,查看文件的路径
![d548437da98fcc067d8ca653bf3ac41d.png](https://i-blog.csdnimg.cn/blog_migrate/780757a9515d1cd04a1631395d621444.jpeg)
/
![8761bc93c2212f12819b144c82f1af6d.png](https://i-blog.csdnimg.cn/blog_migrate/065e5a173eb3a61a8ff4f7141a873fac.jpeg)
二、伪分布式配置文件的设置
进入hadoop的配置文件所在目录
[
1.修改hadoop-env.sh
[
将下面一行到文件末尾
export
![b8d07330b4a5cdbb9d9fa16ce5504861.png](https://i-blog.csdnimg.cn/blog_migrate/82b84b4a3419ed7ab63d74cab3c84299.jpeg)
G跳到文件末尾,wq保存退出
2.修改core-site.xml
[
在文件末尾<configuration>和</configuration>之间添加以下内容
<!
![f25b78d37bae963255bef40348517266.png](https://i-blog.csdnimg.cn/blog_migrate/d9bc15f5b80244900b20a12ac66e16bd.jpeg)
3.修改hdfs-site.xml
[
在文件末尾添加以下内容(并设置块大小Blocksize为64m)
<!
![ecc302452861bcc2a873974965a61a38.png](https://i-blog.csdnimg.cn/blog_migrate/87f6c713bc627834ae491972d9276c14.jpeg)
4.将mapred-site.xml.template更名为mapred-site.xml并修改其内容
[
在文件末尾添加以下内容
<!
![a4c07597342ea678a3209a73e4f4a823.png](https://i-blog.csdnimg.cn/blog_migrate/fd19e2b66dfb36279d799ae694130385.jpeg)
5.修改yarn-site.xml
[
在文件末尾添加以下内容
<!
![a30af0f24c50466b14bfd67ef3fe5a20.png](https://i-blog.csdnimg.cn/blog_migrate/b38ea95d791aec9f03752f7425c0c99e.jpeg)
6.修改slaves
[
将文件内容修改成以下内容
node1
![7a17d5015649cf39a425805bc063c39a.png](https://i-blog.csdnimg.cn/blog_migrate/6c77d581b0c50331516c6629ba81333a.jpeg)
三、关闭防火墙
1.查看防火墙状态
[
2.临时关闭防火墙
[
重启后防火墙还是会开启,centos7开始要使用 systemctl stop firewalld 关闭防火墙或者用systemctl disabled firewalld永久关闭防火墙
3.查看防火墙开机启动状态
[
4.关闭防火墙开机启动
[
![c4ab352b08f70c216f9f7fbcc5ef78f9.png](https://i-blog.csdnimg.cn/blog_migrate/d71ab6a2123dfb7bf92307261c627302.jpeg)
四、将hadoop添加到环境变量
[
在文件末尾添加以下内容
export
PATH在安装jdk时已经设置,这里需要修改其值
更新配置
[
重启CentOS
![ee709d65db4a5c65454891ca06f0fc98.png](https://i-blog.csdnimg.cn/blog_migrate/dd730c5745e4bae1e8ad525d24719732.jpeg)
五、格式化HDFS(NAMENODE)
第一次使用时要格式化
[
六、消除警告信息
在执行start-dfs.sh,start-yarn.sh等操作时会出现警告信息
问题的错误原因会发生在64位的操作系统上,原因是官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。解决方法之一是在64位系统上重新编译hadoop。
另一种解决方法如下:
1.对于下面这个警告信息
Java HotSpot(TM) Client VM warning: You have loaded library /root/app/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
修改hadoop-env.sh,在文件最后加入两行:
export
![44c506e268afd80b366e7d2b91a7490b.png](https://i-blog.csdnimg.cn/blog_migrate/6ad306e547c6fa252c23ce122a3212a3.jpeg)
2.对于下面这个警告信息
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
这个是警告信息,可以在打印日志中去掉,将警告改为错误即可
在日志中将警告改为错误
vi
在这个文件最后加入一行
log4j
![16a21eccb840c3d6e85ae2685ecd16fc.png](https://i-blog.csdnimg.cn/blog_migrate/b9260919ffcfdca3491ec5e92cf0c569.jpeg)
七、配置免密登录hadoop
执行start-dfs.sh和start-yarn.sh时都要多次输入密码,这是因为ssh协议的要求
实现从node1通过ssh免密登录其它主机(包括自己)
a.生成ssh免登陆密钥
[
输入3个回车(或y)
执行完这个命令后,会生成id_rsa(私钥)和id_rsa.pub(公钥)
b.将公钥拷贝到要免密登录的目标机器上
[
八、启动Hadoop
1.启动dfs.sh
[
2.启动yarn.sh
[
3.用jps查看进程
[
![ff4e68cbb11d43d489144162b18041b4.png](https://i-blog.csdnimg.cn/blog_migrate/49c9dbe32b4f6f48778855b120941d7c.jpeg)
注:以消除警告和免密登录协议
九、通过web界面验证
1.修改linux主机与ip地址映射关系
在前面已修改windows主机同linux主机名与IP地址的映射关系,简述如下:
修改C:WindowsSystem32driversetchosts文件(先要修改其属性中安全选项使得Users用户组有完全控制权限),在最后面加入一行(为后面的分布式集群,一并将四台linux的ip和主机名映射关系写上):
192.168
现在在cmd中可以用ping node1
2.浏览器打开hdfs的web管理界面
node1
![37237e2d0cb097ef0882f60a4a963534.png](https://i-blog.csdnimg.cn/blog_migrate/c29fe69ad784e5cfb303d16d39c6df45.jpeg)
3.浏览器打开yarn的web管理界面
node1
![387c0b178343bab600743595e75f9ccd.png](https://i-blog.csdnimg.cn/blog_migrate/99f9a0166cb75c85c4f35bbe316adaaf.jpeg)
4.上传一个文件到hdfs
[
或者
[root@node1 hadoop]# hadoop fs -put /root/softpkgs/jdk-8u211-linux-i586.tar.gz hdfs://node1:9000/app
在hdfs管理页面中选择utilities/browse the file system可以看到这个刚上传的文件
![848301aa7bf9e6bf1e77017f055f2a3e.png](https://i-blog.csdnimg.cn/blog_migrate/48a9bd19432eac224acf7413f310dd8a.jpeg)
删除所有文件
[
点击这个文件还可以下载到主机
还可通过linux查看文件是否已上传
[
现删除CentOS中的jdk-8u211-linux-i586.tar.gz
[
现从hdfs下载之前上传的jdk-8u211-linux-i586.tar.gz
[
发现文件已经成功下载到当前目录
[
十、测试mapreduce
1.切换到目录
[
![7c747e58b3635fff8c522497334594ed.png](https://i-blog.csdnimg.cn/blog_migrate/b8f99566d59d459edca50f24cc0c4b82.jpeg)
看到该目录有一个文件hadoop-mapreduce-examples-2.7.1.jar
这个jar包包含很多mapreduce示例程序
2.用mapreduce运行圆周率程序
用这个jar包运行计算圆周率的mapreduce程序
[
其中参数pi指定要运行那个类,第一个5是map的任务数量,第二个5是每个map的取样数,这两个数越大,结果越精确,但是也越耗时
若提示进入safe mode,退出安全模式
[
3.查看任务
在程序执行过程中可以通过yarn界面查看任务
![77c24b23a1d9baccbeedb866eb9716d2.png](https://i-blog.csdnimg.cn/blog_migrate/ff96144440764f192f42ba217bbbf481.jpeg)
4.查看结果
![e22ec46231ad3e4de4ff7f42ebcf7de7.png](https://i-blog.csdnimg.cn/blog_migrate/1a40b3e955221c6a2c5be44c52f63b97.jpeg)
十一、词频统计
1.在Linux本地/root目录下递归创建目录wordcount/input
[
在Linux本地/root/wordcount/input目录下创建文件wc.txt,内容如下:
java
![51d023c4f864830f205093972f353079.png](https://i-blog.csdnimg.cn/blog_migrate/e3d2e6c71a41e1e6e1afc6d4f28a63d8.jpeg)
2.在HDFS根目录下递归创建目录wordcount/input
首先删除HDFS上的wordcount目录及wc.txt
[
查看是否还有该目录
[
在HDFS根目录下递归创建目录wordcount/input
[
![87ef0b364e751add0be0cfbfae78b938.png](https://i-blog.csdnimg.cn/blog_migrate/48efb2712e4235c5777d2e279d86f30f.jpeg)
将Linux本地的文件wc.txt上传到HDFS的input目录
[
![a08292759f6b5dbb823a805620de6b71.png](https://i-blog.csdnimg.cn/blog_migrate/33b5f652255ed25b540a55bca96ab4ea.jpeg)
用mapreduce对wc.txt进行词频统计,使用HDFS中的input目录作为输入目录,HDFS中/wordcount/output作为结果输出目录,将结果文件下载到Linux本地并验证结果是否正确
下面对这个文件进行字数统计
[
通过yarn界面查看任务
![862ba99757129b3471d203c8b8ebcb18.png](https://i-blog.csdnimg.cn/blog_migrate/f93b0835ed05ffd4a16c5d35303b2f1a.jpeg)
上面这条指令会将input目录下所有文件都进行字数统计并将结果写到output目录中(运行程序之前不要创建output目录,不然会报错,程序运行时会自动创建)
在hdfs管理页面可以下载part-r-00000文件,打开该文件可以看到统计结果,结果文件按照原始文件中单词升序排列并给出每个单词出现的次数
通过web界面发现在HDFS的/wordcount目录下创建里output,output有两个文件
![3152cc5e6db5aba7523123a83b1448a7.png](https://i-blog.csdnimg.cn/blog_migrate/b52d930a11f21565790bc8e6bb6bade1.jpeg)
运行结束,查看结果
![5c8e2f8c9f4830108585ee15ed10dffe.png](https://i-blog.csdnimg.cn/blog_migrate/ba116474e17353d50334f6206f966dd8.jpeg)
可以用下面的指令查看词频统计结果
[
![f14a62f21c002931d2e100f2a56498ba.png](https://i-blog.csdnimg.cn/blog_migrate/112bf45a09fd156f3bfff79ddd159627.jpeg)
还可将其下载到windows本地查看
![e509933617de8301a70fa62fee9ebb79.png](https://i-blog.csdnimg.cn/blog_migrate/1b29e9f9f58b56a1ca9cdce4ebd7fa17.jpeg)
十二、备份
一种简单便捷的方法是快照
[
在/root下创建目录backup
![b0affaeec0fe678daaf5690febba6a4f.png](https://i-blog.csdnimg.cn/blog_migrate/8c67671d530ed72df65177c30c4485f8.jpeg)
将网络配置及主机名、IP地址的映射关系及伪分布式的重要文件做备份(方便伪分布式与分布式集群之间的转换)
To be continue ... ...