1.创建linux账号


作用:创建特定的linux系统账号区分hadoop进程;


hdfs


hdfs 密码: qazwsx


创建用户组:groupadd hadoop


hdfs


2.配置ssh


作用:hadoop控制脚本依赖ssh来执行针对整个集群的操作。


ssh安装好之后,需要允许来自集群内机器的hdfs用户能够无需密码登陆,创建一个公钥/私钥对放在NFS之中,集群共享该密钥对。


切换到hdfs用户:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa (无口令密钥)


cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


测试是否设置成功:ssh localhost,如果不需要密码即可登录,则说明设置成功


3.下载安装


A.下载hadoop(2.8.1版本),存放在/opt/download


wget http://apache.fayea.com/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz


B.解压,存放在/opt/hadoop


tar zvxf /opt/download/hadoop-2.8.1.tar.gz


C.授权


chown -R hdfs:hadoop hadoop


D.设置环境变量( 安装jdk.note )


添加配置:vim /etc/profile


## hadoop


export HADOOP_HOME=/opt/hadoop-2.8.1


export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


执行命令使修改生效:source /etc/profile


E.查看hadoop配置是否成功




hdfs用户权限设置root hdfs用户密码_hdfs用户权限设置root



4.配置


A.配置文件(/hadoop-2.8.1/etc/hadoop/目录)


1).core-site.xml:通用配置


2).hdfs-site.xml:hdfs配置


3).mapred-site.xml:MapReduce配置


4).yarn-sidte.xml:yarn配置


B.三种运行模式


1).独门(本地)运行模式


2).伪分布模式


3).全分布模式


C.配置(以下命令全部使用hdfs用户)


1).配置文件


配置文件路径:


(1)使用/hadoop-2.8.1/etc/hadoop/下的对应配制文件;


(2)把etc/hadoop目录复制到另一个位置,把*-site.xml放到访目录下,设置环境变量HADOOP_CONF_DIR指向该目录,或者启动守护进程时使用--config选项;


修改配置:


core-site.xml:


<configuration>


<property>


<name>fs.defaultFS</name>


<value>hdfs://localhost/</value>


</property>


</configuration>


hdfs-site.xml:


<configuration>


<property>


<name>dfs.replication</name>


<value>1</value>


</property>


</configuration>


mapred-site.xml:没有mapred-site.xml文件,cp mapred-site.xml.template mapred-site.xml


注意:不启动 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。


<configuration>


<property>


<name>mapreduce.framework.name</name>


<value>yarn</value>


</property>


</configuration>


yarn-site.xml


<configuration>


<property>


<name>yarn.resourcemanager.hostname</name>


<value>localhost</value>


</property>


<property>


<name>yarn.nodemanager.aux-services</name>


<value>mapreduce_shuffle</value>


</property>


</configuration>


2).格式化hdfs文件系统


hdfs namenode -format


3).启动和终止守护进程


start-dfs.sh


start-yarn.sh


mr-jobhistory-daemon.sh start historyserver


启动了以下守护进程:


一个namenode、一个辅助namenode、一个datanode(HDFS)、一个资源管理器、一个节点管理器(YARN)和一个历史服务器(MapReduce)。


可打开web界面:


namenode: http://localhost:50070


资源管理器: http://localhost:8088


历史服务器: http://localhost:19888


5.运行自带的示例程序


A.创建hdfs的用户目录


hadoop fs -mkdir /hdfsinput/


hadoop fs -mkdir /hdfsinput/wordcount/


B.在本地创建测试文件


file_1.txt:Hello World


file_2.txt:


Hello Hadoop


hello mapreduce


C.上传本地文件到/hdfsinput/wordcount/


hadoop fs -put /opt/hadoop/file/file_*.txt /hdfsinput/wordcount/


D.运行示例


hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /hdfsinput/wordcount /hdfsoutput/wordcount


E.查看结果


1).命令行:hadoop fs -ls /hdfsoutput/wordcount/ hadoop fs -cat /hdfsoutput/wordcount/part-r-00000


2).web页面: http://localhost:50070/explorer.html#/hdfsoutput/wordcount


6.遇到的问题


A.localhost: Error: JAVA_HOME is not set and could not be found.


已经设置了JAVA_HOME,还是报错找不到JAVA_HOME,暂时的解决办法:修改hadoop/etc/config/hadoop-env.sh的JAVA_HOME路径。


B.org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:


Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage di rectory does not exist or is not accessible.


原因:centos tmp文件夹下的内家会被定期删除;


暂时解决方法:hadoop namenode -format


永久解决方法:core-site.xml覆盖hadoop.tmp.dir的默认值。