赞
踩
为了避免以后自己遇到什么坑爹的东西,先留脚印给自己。这个hadoop呢,主要是可以让用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。这点比较厉害了。
它主要是用来做数据分析,支持低端服务器集群(这点美滋滋- - ),先抓取大量数据,利用数据运算分析,获取日志,显示报表~;
本例子用的 环境: jdk 1.8.0_152 centos7 hadoop3.0
通解:(分布式文件管理系统)
一个电脑或操作系统管辖的范围存不下的文件,分布到更多的操作系统上,但是不方便管理,能对这些文件进行管理的系统就是分布式文件管理系统
(一次写入多次查询的情况,不支持并发写情况,小文件不合适{由hadoop中的FileInputFormat特点决定的,后面会提}。)
目录
2)启动NameNode 和 DataNode 守护进程及secondary namenodes
3)启动ResourceManager 和 NodeManager 守护进程
如有错误异常问题请进入大佬总结错误笔记:
http://blog.itpub.net/26230597/viewspace-1385602/
# ssh localhost
The authenticity of host ‘localhost (::1)’ can’t be established.
1、去掉 /etc/ssh/sshd_config中的两行注释,如没有则添加,所有服务器都要设置的
#RSAAuthentication yes
#PubkeyAuthentication yes
2、生成秘钥:
输入命令 ssh-keygen -t rsa 然后一路回车即可
3、复制到公共密钥中
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
4、之后测试~如下则成功
tips:(如果有1.8及以上的不需要这步,直接跳过)
最简单的方法,不要用自己的jdk慢慢下载了之后然后上传这么low逼好吗?直接 yum 妥妥的。
如果发现yum 之后出现 command not found 进入下面网站或自行百度
http://blog.sina.com.cn/s/blog_63d8dad80101cn2s.html
查看yum上面的java软件包
yum list installed |grep java ?
找到对的,直接
yum install 上面操作合适的名字 ?
最后输入下面有版本号如图则成功
java version
设置环境变量,便于hadoop调用
编辑/etc/profile文件,在文件末尾添加以下内容
#set jdk environment
export JAVA_HOME=/usr/java/jdk1.8.0_152
?
export PATH=$JAVA_HOME/bin:$PATH
1,下载Hadoop3.0.0
下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0-alpha4/ 这里找,不建议官网- -,会少东西
2,解压安装
1),复制 hadoop-3.0.0.tar.gz 到/usr/hadoop目录下, 然后#tar -xzvf hadoop-3.0.0.tar.gz
解压,解压后目录为:/usr/hadoop/hadoop-3.0.0
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/hadoop/hadoop-3.0.0 ./bin/hadoop version
2),在/usr/hadoop/目录下,建立tmp、hdfs/name、hdfs/data目录,执行如下命令 #mkdir /usr/hadoop/tmp #mkdir /usr/hadoop/hdfs #mkdir /usr/hadoop/hdfs/data #mkdir /usr/hadoop/hdfs/name
3),设置环境变量,#vi /etc/profile
# set hadoop path
export HADOOP_HOME=/usr/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin
4),使环境变量生效,终端中运行如下命令
#source /etc/profile
CentOS版本用 #source ~/.bash_profile
一共需要配置主要的6个文件
hadoop-3.0.0/etc/hadoop/hadoop-env.sh hadoop-3.0.0/etc/hadoop/yarn-env.sh hadoop-3.0.0/etc/hadoop/core-site.xml hadoop-3.0.0/etc/hadoop/hdfs-site.xml hadoop-3.0.0/etc/hadoop/mapred-site.xml hadoop-3.0.0/etc/hadoop/yarn-site.xml
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_152
#The java implementation to usr
export JAVA_HOME=/usr/java/jdk1.8.0_152
<configuration>
<property>
? ?<name>fs.default.name</name>
? ?<value>hdfs://localhost:9000</value>
? ?<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
?
<property>
? ?<name>hadoop.tmp.dir</name>
? ?<value>/usr/hadoop/tmp</value>
? ?<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
<configuration>
<!—hdfs-site.xml-->
<property>
? ?<name>dfs.name.dir</name>
? ?<value>/usr/hadoop/hdfs/name</value>
? ?<description>namenode上存储hdfs名字空间元数据 </description>
</property>
?
<property>
? ?<name>dfs.data.dir</name>
? ?<value>/usr/hadoop/hdfs/data</value>
? ?<description>datanode上数据块的物理存储位置</description>
</property>
?
<property>
? ?<name>dfs.replication</name>
? ?<value>1</value>
? ?<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>
<configuration>
<property>
? ? ? ?<name>mapreduce.framework.name</name>
? ? ? ?<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
? ? ? ?<name>yarn.nodemanager.aux-services</name>
? ? ? ?<value>mapreduce_shuffle</value>
</property>
<property>
? ? ? ?<name>yarn.resourcemanager.webapp.address</name>
? ? ? ?<value>192.168.88.129:8099</value>
? ? ? ?<description>这个地址是mr管理界面的</description>
</property>
</configuration>
#CD /usr/hadoop/hadoop-3.0.0# ./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错
#CD /usr/hadoop/hadoop-3.0.0
# sbin/start-dfs.sh
如果运行脚本报如下错误,
ERROR: Attempting to launch hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch. Starting datanodes ERROR: Attempting to launch hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch. Starting secondary namenodes [localhost.localdomain] ERROR: Attempting to launch hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
解决方案
(缺少用户定义而造成的)因此编辑启动和关闭
$ vim sbin/start-dfs.sh $ vim sbin/stop-dfs.sh
顶部空白处
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
#CD /usr/hadoop/hadoop-3.0.0
#sbin/start-yarn.sh
如果启动时报如下错误,
Starting resourcemanager ERROR: Attempting to launch yarn resourcemanager as root ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.
解决方案
(也是由于缺少用户定义)
是因为缺少用户定义造成的,所以分别编辑开始和关闭脚本 $ vim sbin/start-yarn.sh $ vim sbin/stop-yarn.sh
顶部添加
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
执行jps命令,如下出现基本完成
以后启动可以直接写shell脚本执行,vi 创建文件 ,开头第一行 #! / bin/sh ,最后chmod +x filename ,使脚本可以执行。
本例子:
#! / bin/sh ?
rm -rf /usr/hadoop/hdfs/data/*
rm -rf /usr/hadoop/hdfs/name/*
#启动NameNode 和 DataNode 守护进程及secondary namenodes
sh /usr/hadoop/hadoop-3.0.0/sbin/start-dfs.sh
#启动ResourceManager 和 NodeManager 守护进程
sh /usr/hadoop/hadoop-3.0.0/sbin/start-yarn.sh
记得把防火墙关闭掉或者增加端口允许
/sbin/iptables -I INPUT -p tcp --dport 8099 -j ACCEPT —上面填写的端口
如果发现不能访问50070端口,可进行如下设置
vi /etc/selinux/config
修改
?
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# ? ? enforcing - SELinux security policy is enforced.
# ? ? permissive - SELinux prints warnings instead of enforcing.
# ? ? disabled - No SELinux policy is loaded.
SELINUX=enforcing
?
为
?
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# ? ? enforcing - SELinux security policy is enforced.
# ? ? permissive - SELinux prints warnings instead of enforcing.
# ? ? disabled - No SELinux policy is loaded.
SELINUX=disabled
设置默认访问端口
mapred-site.xml添加下面两个mapred.job.tracker.http.address0.0.0.0:50030mapred.task.tracker.http.address0.0.0.0:50060hdfs-site.xml添加下面配置dfs.http.address0.0.0.0:50070然后停止所有进程,删除name、data文件夹下数据重新格式化,重新启动后访问正常
--------------------附带debug模式开启与关闭
开启:export HADOOP_ROOT_LOGGER=DEBUG,console
关闭:export HADOOP_ROOT_LOGGER=INFO,console
n HDFS shell操作
#查看帮助
hadoop fs -help
#上传
hadoop fs -put <linux上文件> <hdfs上的路径>
#查看文件内容
hadoop fs -cat <hdfs上的路径>
#查看文件列表
hadoop fs -ls /
#下载文件
hadoop fs -get <hdfs上的路径> <linux上文件>
hadoop fs -put <linux上文件> <hdfs上的路径>
例如:hadoop fs -put /root/install.log hdfs://localhost:9000/
hadoop fs -rm hdfs://localhost:9000/install.log
注:如果能正常上传和删除文件说明HDFS没问题。
n 上传一个文件到HDFS
hadoop fs -put words.txt hdfs://localhost:9000/
n 让Yarn来统计一下文件信息
cd /$HADOOP_HOME/share/hadoop/mapreduce/
#测试命令
tips: ha.txt 内容不方便透露 - -
hadoop jar /usr/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount /ha.txt /myorder/
之后就是成功这样了:
这时候jobID和applicationID出现了
输入命令查看
hadoop fs -ls /myorder
查看内容:
hadoop fs -cat /output/part-r-00000
注:如果能正常生成一个目录,并把统计信息输出到文件夹下,说明Yarn没问题。
如果遇到问题:
Failing this attempt.Diagnostics: Exception from contain-launch
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app
那么不急:
进入
cd /usr/hadoop/hadoop-3.0.0/etc/hadoop/
编辑 mapred-site.xml, 添加
<property>
?<name>mapreduce.application.classpath</name>
? ? ?<value>
? ? ? /usr/hadoop/hadoop-3.0.0/etc/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/etc/hadoop/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/common/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/common/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/lib-examples/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/hdfs/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/yarn/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/*,
? ? ?</value>
</property>
yarn-site.xml ,*添加*
<property>
?<name>yarn.application.classpath</name>
? ? ?<value>
? ? ? /usr/hadoop/hadoop-3.0.0/etc/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/etc/hadoop/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/common/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/common/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/lib-examples/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/hdfs/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/yarn/*,
? ? ? ? ? /usr/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/*,
? ? ?</value>
</property>
重启一波,返回上面的命令计算,得到满意的结果,没毛病
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。