共计 17348 个字符,预计需要花费 44 分钟才能阅读完成。
最近要写一个数据量较大的程序,所以想搭建一个 hbase 平台试试。搭建 hbase 伪分布式平台,需要先搭建 Hadoop 平台。本文主要介绍伪分布式平台搭建过程。
目录:
一、前言
二、环境搭建
三、命令测试
四、启动 YARN
五、web 查看
一、前言
1、开始搭建前上官网看了一下,发现最新版本是 3.0,但一想到跨版本而且又是最新版本的一般都会出现各种不一样的问题,所以决定使用了 2.7.3,hadoop2 的最新版本,至于跟后面搭建 hbase 的版本兼不兼容的情况等遇到再看怎么处理(实验证明最新版本的 hbase1.2.3 跟 hadoop2.7.3 是完美兼容的)。
2、机器只有实体机一台 10.1.2.108,CentOS 6.3,64 位系统
[root@root@linuxidc.com ~]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
[root@root@linuxidc.com ~]# getconf LONG_BIT
64
3、大概了解了下就网上到处找安装教程,发现写的好的还是一大堆的,不过大家基本上都是参考官方安装教程。
4、由于开了多个窗口,所以本文中的 shell 命令有时候是 root 运行,有时候是 hadoop 账号运行,需要注意 hostname 以便区分
二、环境搭建
1、新建 hadoop 用户
[root@linuxidc.com home]# useradd hadoop
[root@linuxidc.com home]# passwd hadoop
Changing password for user hadoop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
tar xvzf jdk-8u40-linux-x64.tar.gz
mv jdk1.8.0_40/ /usr/local/java1.8.0_40
ln -s /usr/local/java1.8.0_40 /usr/local/java
cat >> /etc/profile <<'MUL'
JAVA_HOME=/usr/local/java/
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
MUL
source /etc/profile
[root@root@linuxidc.com ~]# java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
4、配置本机免密 ssh 登陆
公司的机器是配好 ssh 的,如果没安装机器可以使用命令
yum install openssh-clients -y
yum install openssh-server -y
安装成功后配置免密登陆需要先切换 hadoop 账号,使用 ssh-keygen 生成 sshkeys,并且将公钥授权给本机
[root@root@linuxidc.com ~]# su - hadoop
[hadoop@root@linuxidc.com ~]$ ssh-keygen -t rsa # 一路回车
[hadoop@root@linuxidc.com ~]$ cd ~/.ssh/
[hadoop@root@linuxidc.com .ssh]$ cat id_rsa.pub >> authorized_keys
[hadoop@root@linuxidc.com .ssh]$ chmod 600 ./authorized_keys
修改 /etc/hosts,增加 localhosts
[hadoop@root@linuxidc.com .ssh]$ hostname
root@linuxidc.com
[hadoop@root@linuxidc.com .ssh]$ cat /etc/hosts
10.1.2.108 localhost
10.1.2.108 root@linuxidc.com
由于公司机器的 ssh 默认端口是 322,而不是 22,所以配置免密登陆是需要指定端口的 ssh -p322,这里我们还需要修改配置文件,root 权限查看配置文件末两行,第一行是设置使用 322 端口进行通信,第二行是将 ssh 配置成监听机器的全网段,包含内外网 ip。如果没有这一行,需要自己添加,不然后面启动 hadoop SecondNode 会一直提示连接 0.0.0.0 失败。
重启 ssh 服务。
[root@root@linuxidc.com ~]# tail /etc/ssh/sshd_config
Port 322
ListenAddress 0.0.0.0
[root@root@linuxidc.com ~]# service sshd restart
Stopping sshd: [OK]
Starting sshd: [OK]
接着运行下面命令成功即可。
[hadoop@root@linuxidc.com ~]$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
[hadoop@root@linuxidc.com ~]$ ssh -p322 localhost
Last login: Tue Nov 1 20:40:23 2016 from 10.1.2.108
如果提示
-bash: /usr/bin/ssh: Permission denied
则 root 下使用下面命令
chmod a+x /usr/bin/ssh
5、安装 hadoop
因为我下载的编译后的包,所以是可以直接解压运行的。
[root@root@linuxidc.com tar]# cd /home/hadoop/tar/
[root@root@linuxidc.com tar]# tar -xzf hadoop-2.7.3.tar.gz
[root@root@linuxidc.com tar]# chown -R hadoop: /home/hadoop/
[root@root@linuxidc.com tar]# mv hadoop-2.7.3 /usr/local/hadoop
[root@root@linuxidc.com tar]# chown -R hadoop: /usr/local/hadoop/
[hadoop@root@linuxidc.com ~]$ cd /usr/local/hadoop/
[hadoop@root@linuxidc.com hadoop]$ ./bin/hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.3.
export JAVA_HOME=/usr/local/java # 本来是 ${JAVA_HOME}
export HADOOP_SSH_OPTS="-p 322" # 末尾增加一行
6、hadoop 单机运行
hadoop 默认就是单机模式,java 单进程运行,方便调试。我们可以直接使用原生的例子来测试 hadoop 是否安装成功,运行下面命令就可以看到 hadoop 原生所有例子
若出现提示“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,该 WARN 提示可以忽略,不会影响 Hadoop 正常运行(可通过编译 Hadoop 源码解决)。
[hadoop@root@linuxidc.com hadoop]$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
An example program must be given as the first argument.
Valid program names are:
aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files.
aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files.
bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi.
dbcount: An example job that count the pageview counts from a database.
distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi.
grep: A map/reduce program that counts the matches of a regex in the input.
join: A job that effects a join over sorted, equally partitioned datasets
multifilewc: A job that counts words from several files.
pentomino: A map/reduce tile laying program to find solutions to pentomino problems.
pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method.
randomtextwriter: A map/reduce program that writes 10GB of random textual data per node.
randomwriter: A map/reduce program that writes 10GB of random data per node.
secondarysort: An example defining a secondary sort to the reduce.
sort: A map/reduce program that sorts the data written by the random writer.
sudoku: A sudoku solver.
teragen: Generate data for the terasort
terasort: Run the terasort
teravalidate: Checking results of terasort
wordcount: A map/reduce program that counts the words in the input files.
wordmean: A map/reduce program that counts the average length of the words in the input files.
wordmedian: A map/reduce program that counts the median length of the words in the input files.
wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files.
运行下面命令可以测试单词过滤例子 grep
[hadoop@root@linuxidc.com hadoop]$ mkdir input
[hadoop@root@linuxidc.com hadoop]$ cp *.txt input/
[hadoop@root@linuxidc.com hadoop]$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'SOFT[A-Z]+'
[hadoop@root@linuxidc.com hadoop]$ cat output/part-r-00000
49 SOFTWARE
[hadoop@root@linuxidc.com hadoop]$ ls output/
part-r-00000 _SUCCESS
如果出现 metrics.MetricsUtil: Unable to obtain hostName 的错误那就是 hostname 没配置好,修改好即可。
[root@root@linuxidc.com tar]# hostname root@root@linuxidc.com
如果在这之前已经安装了伪分布式平台,则以上命令是不会输出到当前文件系统的,而是会发到 hdfs 文件系统中。
6、伪分布式安装
先设置环境变量,修改~/.bashrc,修改后 source ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
hadoop 的配置文件在 etc/hadoop 下面,伪分布式需要修改 2 个配置文件 core-site.xml 和 hdfs-site.xml。配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改 core-site.xml,增加两个 property,有些人会把 ip 写成 localhost,但个人建议使用 ip 会比较有保证,不会那么容易出错。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.1.2.108:9000</value>
<description>NameNode URI</description>
</property>
</configuration>
修改 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
接着启动 NameNode,SecondNameNode,DataNode 进程
启动完成后根据 jps 命令来判断是否启动成功。如果 jps 命令未找到则运行
[hadoop@root@linuxidc.com hadoop]$ alias jps='/usr/local/java1.8.0_40/bin/jps'
[hadoop@root@linuxidc.com hadoop]$ jps
54004 Jps
54871 NameNode
55800 NodeManager55023 DataNode
上面四个进程缺一不可,缺少的话可以重新检查配置或者谷歌搜索,当然也可以查看日志,start-dfs.sh 的输出有说明日志的路径,/usr/local/hadoop/logs 下的.log 文件
[hadoop@root@linuxidc.com hadoop]$ tail logs/hadoop-hadoop-secondarynamenode-root@linuxidc.com.log
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy11.rollEditLog(Unknown Source)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:512)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:395)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$1.run(SecondaryNameNode.java:361)
at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:415)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:357)
1) 重启后生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2) 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
在开启了防火墙时,做如下设置,开启相关端口,修改/etc/sysconfig/iptables 文件,添加以下内容:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 322 -j ACCEPT
如果遇到 hadoop datanode Does not contain a valid host:port authority 导致的 DataNode 未启动则一般是 hostname 的问题,hostname 有时候不能包含‘.’‘/’ ‘_’ 等非法字符的主机名。修改 /etc/hosts 的 hostname,然后 hostname newhostname,接着删掉 tmp,重新 format,重新 start-dfs.sh
三、命令测试
由于 DataNode 出问题之后,我把 hostname 修改为了 master,之后的命令会是下面这样
[root@master ~]#
[hadoop@master ~]$
上面运行的单机例子读取和写入的都是本地的文件系统,而伪分布式读取写入的是 HDFS 上的数据。
[hadoop@master ~]$ hdfs dfs -mkdir /user/hadoop # 新建��录作为个人账号目录
[hadoop@master ~]$ hdfs dfs -mkdir input # 新建
[hadoop@master ~]$ hdfs dfs -ls
16/11/03 00:10:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 input
[hadoop@master ~]$ hdfs dfs -ls /user/hadoop
16/11/03 00:10:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 /user/hadoop/input
[hadoop@master ~]$ hdfs dfs -ls -R /
16/11/03 00:14:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:14 /user
drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:14 /user/hadoop
drwxr-xr-x - hadoop supergroup 0 2016-11-03 00:06 /user/hadoop/input
在运行 hadoop 伪分布式实例之前我们先删掉之前单机模式产生的 output 文件夹,然后开始运行
[hadoop@master hadoop]$ hdfs dfs -put *.txt input
16/11/03 09:58:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@master hadoop]$ hdfs dfs -ls input
16/11/03 09:58:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 3 items
-rw-r--r-- 1 hadoop supergroup 84854 2016-11-03 09:58 input/LICENSE.txt
-rw-r--r-- 1 hadoop supergroup 14978 2016-11-03 09:58 input/NOTICE.txt
-rw-r--r-- 1 hadoop supergroup 1366 2016-11-03 09:58 input/README.txt
[hadoop@master hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'SOFT[A-Z]+'
[hadoop@master hadoop]$ hdfs dfs -ls output
16/11/03 09:59:47 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2016-11-03 09:59 output/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 12 2016-11-03 09:59 output/part-r-00000
[hadoop@master hadoop]$ ls output
ls: cannot access output: No such file or directory
[hadoop@master hadoop]$ hdfs dfs -cat output/part-r-00000
16/11/03 10:00:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
49 SOFTWARE
[hadoop@master hadoop]$ hdfs dfs -get output ./output # 将文件夹取回到本地文件系统
16/11/03 10:03:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@master hadoop]$ ls output/
part-r-00000 _SUCCESS
[hadoop@master hadoop]$ cat output/part-r-00000
49 SOFTWARE
[hadoop@master hadoop]$
注意运行 Hadoop 程序时,程序指定的输出目录(如 output)不能存在,否则会提示错误,因此运行前需要先删除输出目录
四、启动 YARN
hadoop2 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator),YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性。为什么要升级到 YARN,可以参考这篇文章《Hadoop 新 MapReduce 框架 Yarn 详解》http://www.linuxidc.com/Linux/2013-09/90090.htm。这里只引用文章的一点内容,有兴趣的读者可直接打开文章查看更多内容:
原框架的问题逐渐浮出水面,主要的问题集中如下:
1、JobTracker 是 Map-reduce 的集中处理点,存在单点故障。
2、JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
3、在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
4、在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
5、源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度。
6、从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 (例如 bug 修复,性能提升和特性化) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。
Yarn 框架相对于老的 MapReduce 框架什么优势呢?我们可以看到:
1、这个设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
2、在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
3、对于资源的表示以内存为单位 (在目前版本的 Yarn 中,没有考虑 cpu 的占用),比之前以剩余 slot 数目更合理。
4、老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters(注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。
5、Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。
接下来开始修改配置文件。
[hadoop@master hadoop]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
修改 etc/hadoop/mapred-site.xml,增加 property
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改 etc/hadoop/yarn-site.xml,增加 property
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
启动 YARN
[hadoop@master hadoop]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out
localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-master.out
[hadoop@master hadoop]$ jps
51616 NameNode
51771 DataNode
51995 SecondaryNameNode
3421 ResourceManager
3550 NodeManager
3919 Jps
可以发现,比之前多了两个进程 NodeManager,ResourceManager。启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。有兴趣的读者可以观察日志对比变化。
注意在单机上启动 YARN 可能会发现测试实例的运行速度变慢了(可以看出单机伪分布式并不适合使用 YARN),这时候如果要关闭 YARN 直接启动伪分布式平台则需要将 mapred-site.xml 删掉,保留原来的 mapred-site.xml.template 即可。停止 YARN 命令如下
[hadoop@master hadoop]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
localhost: stopping nodemanager
no proxyserver to stop
[hadoop@master hadoop]$ jps
51616 NameNode
7236 Jps
51771 DataNode
51995 SecondaryNameNode
如果要关闭 hadoop 伪分布式平台,则先停止 YARN,再停止 NameNode
hadoop@master hadoop]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
localhost: stopping nodemanager
no proxyserver to stop、[hadoop@master hadoop]$ jps
51616 NameNode
7236 Jps
51771 DataNode
51995 SecondaryNameNode
[hadoop@master hadoop]$ stop-dfs.sh
16/11/03 10:36:37 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Stopping namenodes on [localhost]
localhost: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
16/11/03 10:36:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@master hadoop]$ jps
9463 Jps
重新启动并查看运行进程和集群状态信息
[hadoop@master hadoop]$ start-dfs.sh
[hadoop@master hadoop]$ start-yarn.sh
[hadoop@master hadoop]$ jps
12178 ResourceManager
12690 Jps
11540 NameNode
11943 SecondaryNameNode
12312 NodeManager
11707 DataNode
[hadoop@master hadoop]$ hdfs dfsadmin -report
五、web 查看
由于我没有使用 web 查看过,所以不知道网页查看是长什么样子的。但端口应该是 50030 和和 50070。可以打开页面访问 http://your ip:50030,http://your ip:50070
至此,伪分布式 hadoop 平台搭建完成。要了解更多请参考官网文档。
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
Hadoop 2.6.0 HA 高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136789.htm