操作系统:在windows7下使用ubuntu-14.04.3-desktop-amd64
hadoop版本:hadoop-2.7.1
jdk版本:jdk-7u79-linux-x64.tar.gz
1. 修改主机名为master
$ sudo vim /etc/hostname
编辑hostname文件,在文件中输入master并保存该文件即可。重启系统。
注:值的指出的是,在其它Linux发行版中,并非都存在/etc/hostname文件。如Fedora发行版将主机名存放在/etc/sysconfig/network文件中。所以,修改主机名时应注意区分是哪种Linux发行版。
2. 修改hosts
$ sudo vim /etc/hosts
修改内容: 127.0.0.1 master
3. 配置SSH
此处不再讲述,请参考 初学hadoop2.7.1(一)配置单点模式
4. 安装配置hadoop-2.7.1
此处不再讲述,请参考 初学hadoop2.7.1(一)配置单点模式
5. 在hadoop目录创建文件
$ mkdir dfs
$ mkdir dfs/name
$ mkdir dfs/data
6. 修改hadoop配置文件
1) 修改配置文件hadoop-env.sh,
$ sudo vim etc/hadoop/hadoop-env.sh
修改JAVA_HOME为我们安装的JAVA_HOME,
export JAVA_HOME=/usr/lib/java/jdk1.7.0_79
2) 修改配置文件yarn-env.sh,
$ sudo wimetc/hadoop/yarn-env.sh
修改JAVA_HOME为我们安装的JAVA_HOME,
export JAVA_HOME=/usr/lib/java/jdk1.7.0_79
3) 修改配置文件mapred-env.sh
$ sudo wimetc/hadoop/mapred-env.sh
修改JAVA_HOME为我们安装的JAVA_HOME,
exportJAVA_HOME=/usr/lib/java/jdk1.7.0_79
4) 修改slaves文件
$ sudo vimetc/hadoop/slaves
修改 localhost为master
5) 修改配置文件core-site.xml
$ sudo vimetc/hadoop/core-site.xml
修改内容为:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/tongwei/Work/Dev/Hadoop/hadoop-2.7.1/tmp</value>
<description>A base of othertemporary directories</description>
</property>
</configuration>
core-site.xml各项配置可参考:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/core-default.xml
6) 修改配置文件 hdfs-site.xml
$ sudo vimetc/hadoop/hdfs-site.xml
修改内容为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/tongwei/Work/Dev/Hadoop/hadoop-2.7.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/tongwei/Work/Dev/Hadoop/hadoop-2.7.1/dfs/data</value>
</property>
</configuration>
hdfs-site.xml各项配置可参考:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
7) 修改配置文件 mapred-site.xml
$ sudo vimetc/hadoop/mapred-site.xml
修改内容为:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
mapred-site.xml各项配置可参考:http://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
8) 配置文件yarn-site.xml
$ sudo vimetc/hadoop/yarn-site.xml
修改内容为:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
yarn-site文件配置的各项内容可参考:http://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
注:
也可以增加spark_shuffle,配置如下
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle,spark_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
个人认为 当提交hadoop MR 就启用,mapreduce_shuffle,当提交spark作业 就使用spark_shuffle,但个人感觉spark_shuffle 效率一般,shuffle是很大瓶颈,还有 如果你使用spark_shuffle 你需要把spark-yarn_2.10-1.4.1.jar 这个jar copy 到HADOOP_HOME/share/hadoop/lib下 ,否则 hadoop 运行报错 class not find exeception.
7. 启动并验证hadoop伪分布式
1) 格式化hdfs文件系统
$ bin/hadoop namenode –format
2) 启动hdfs
$ sbin/start-dfs.sh
此刻我们发现在master上启动了NameNode、DataNode、SecondaryNameNode
此刻通过web控制台查看hdfs,http://master:50070/
3) 启动yarn
$ sbin/start-yarn.sh
使用jps命令可以发现master机器启动了ResourceManager进程
5081 Jps
5049 NodeManager
4388 NameNode
4509 DataNode
4926 ResourceManager
4712 SecondaryNameNode
PS:我们上传一个文件到hdfs吧:
$ bin/hadoop fs -mkdir -p dfs/data/test
$ bin/hadoop fs -put README.txt dfs/data/test
$ bin/hadoop fs -text dfs/data/test/README.txt
$ bin/hadoop fs命令参考
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
hadoop web控制台页面的端口整理:
50070:hdfs文件管理
8088:ResourceManager
8042:NodeManager
19888:JobHistory(使用“mr-jobhistory-daemon.sh”来启动JobHistoryServer)