一、Hadoop 安装
1.apache 官网下载hadoop tar.gz 上传到linux 服务器;
2.验证Linux 服务器是否有java环境,java -version;是否有JAVA_HOME,echo $JAVA_HOME;
3.配置Hadoop 环境变量,需要配置 hadoop目录下的 bin 和 sbin 目录
注:环境变量可在 ~/.bash_profile(只对当前用户有效 ) 或者 /etc/profile(对所有用户有效) 中配置;
HADOOP_HOME=/home/hadoop/hadoop-3.1.0
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
验证:echo $HADOOP_HOME 打印出我们所配的即可;
二、hadoop目录结构
三、hadoop的本地模式:
特点:不具备HDFS,只能测试MapReduce 程序;
安装:只需要修改hadoop/etc/hadoop/hadoop-env.sh 文件,在其中添加上JAVA_HOME即可
vim hadoop/etc/hadoop/hadoop-env.sh 添加如下:
export JAVA_HOME=***
测试:
hadoop jar hadoop-mapreduce-examples-3.1.0.jar wordcount /home/demo/input/demo1 /home/demo/output/wc_demo1.txt
看到如下:2018-07-18 23:22:47,379 INFO mapreduce.Job: map 100% reduce 100% 即已经运行完成,可以到/home/demo/output/wc_demo1.txt下查看:ls
cat part-r-0000 即可看到hadoop 的mapreduce 的结果。
hadoop 的mapreduce 结果默认是按照字典顺序排好序的。
四、Hadoop的伪分布式:
特点:具备hadoop所有的功能,在单机模拟hadoop分布式环境。把nameNode,dataNode 安装在同一个节点上,还需要装一个MapReduce的运行环境yarn。需要配置如下内容:
(1)HDFS:主节点:nameNode;数据节点:dataNode;
(2)yarn:是一个容器,用来运行MapReduce程序;类似jsp需要运行在tomcat容器一样。yarn也有两部分:
主节点:ReourceManager
从节点:NodeManager
(HDFS配置)
hdfs-site.xml配置:($HADOOP_HOME/etc/hadoop/hdfs-site.xml 中的confirgation 标签中)
dfs.replication
1
dfs.permissions
false
core-site.xml配置:($HADOOP_HOME/etc/hadoop/core-site.xml中的confirgation 标签中)
fs.defaultFS
hdfs://10.0.0.180:9000
hadoop.tmp.dir
/hadoop/dataNode_1_dir
(yarn配置)
mapred-site.xml配置:($HADOOP_HOME/etc/hadoop/mapred-site.xml中的confirgation标签中)
mapreduce.framework.name
yarn
yarn-site.xml配置:($HADOOP_HOME/etc/hadoop/yarn-site.xml中的confirgation标签中)
yarn.resourcemanager.hostname
10.0.0.180
yarn.nodemanager.aux-services
mapreduce_shuffle
至此,配置完毕,但是还不能启动,要对hdfs先进行格式化。类似以前的软盘,使用前要先格式化;
执行命令:hdfs namenode -format
启动:
start-all.sh 会启动两部分,
1)启动HDFS 存储数据
2)启动yarn 执行计算
启动后,命令行 jps 出现:
说明Hadoop伪分布式已经启动成功了
访问:
1)命令行方式;
2)java api 访问;
3)web 浏览器;
踩坑过程:
1.hadoop 无法启动,报nameNode 没有配置用户名
解决措施:首先将linux服务器设置免密登陆(不懂的可以百度)
生成密钥、复制、修改权限
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ chmod 0600 ~/.ssh/authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
发现还是不能启动,但是错误不一样了,大概是当前用户名是centos7 而我设置的localhost;
修改hostname:注意hostname有两个位置
# hostnamectl set-hostname host-name
# hostnamectl --static set-hostname host-name
修改后,终于可以启动了。但是访问50070端口,访问不了。
百度一堆解决这个问题的,什么关闭防火墙啊,验证配置文件啊,都不好用。最后查看了下服务器启动的端口
关闭防火墙一个一个的试吧,最后终于找到了HDFS nameNode 的登陆端口,竟然是9870,吐血。浏览器访问,10.0.0.180:9870 成功!
最后感谢【腾讯视频】赵强老师分享的Hadoop视频,讲的很好,很细致,看了很受教!