如何搭建Hadoop处理环境?

  • 回答 (6)
  • 关注 (0)
  • 查看 (218)

Apache Hadoop 是用于开发在分布式计算环境中执行数据处理应用程序的框架。旨在从单个服务器提供存储和计算资源的方式扩展到数千台机器。Apache Hadoop的核心部分由存储部分(Hadoop分布式文件系统)及其数据处理部分(MapReduce)组成。Hadoop将文件分割成大块,并将它们分发到群集中的节点上。那么如何搭建Hadoop处理环境?

印度陆军医院印度陆军医院提问于
asioc一个程序员回答于

软件环境:

虚拟机:VMware Pro14

Linux:CentOS-6.4(下载地址,下载DVD版本即可)

JDK:OpenJDK1.8.0 (强力建议不要使用 Oracle 公司的 Linux 版本的 JDK)

Hadoop:2.6.5(下载地址

虚拟机的安装和Linux系统的安装这里就省略了,可以参照网上的教程安装,一般没什么大问题,需要注意的是记住这里你输入的用户密码,下面还要用,如下图所示。

设置用户密码.png

用户选择

使用虚拟机安装好系统后,可以看到登录界面,如下图所示。

进入系统.png

选择 Other ,在 Username 输入框中输入 root,回车,再在 Password 输入框中输入你创建用户时密码。root 用户是安装 CentOS 自动创建的超级用户,但密码和你安装系统时创建的普通用户密码是一样的。

平时在使用 CentOS 时,并不推荐使用 root 用户,因为该用户具有整个系统的最高权限,使用该用户可能会导致严重的后果,但前提是你对 Linux 很熟,才会误操作。搭建 Hadoop 的大数据平台,使用普通用户,很多命令需要 sudo 命令来获取 root 用户的权限,比较麻烦,所以索性直接使用 root 用户。

安装SSH

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令)。

首先确保你的 CentOS 系统可以正常的上网,你可以查看桌面右上角的网络图标,若显示红叉则表明未联网,可点击选择可用网络,也可以使用桌面左上角的火狐浏览器输入网址验证是否网络连接正常。如果还是无法上网,检查虚拟机的设置,选用 NAT 模式,或者上网百度解决。

检查网络状况.png

确定网络连接正常后,打开 CentOS 的终端,可在 CentOS 的桌面点击鼠标右键,选择 Open In Terminal,如下图所示。

打开终端.png

一般情况下,CentOS 默认已安装了 SSH client、SSH server,可打开终端执行如下命令进行检验:

rpm -qa | grep ssh

如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装。

查看SSH是否已安装.png

如果需要安装,则可以通过 yum 这个包管理器进行安装。(安装过程中会让你输入 [y/N],输入 y 即可)

注意:命令是单条执行的,不是直接把两条命令粘贴过去。

终端中的粘贴可通过鼠标点击右键选择 Paste 粘贴,也可通过快捷键 【Shift + Insert】粘贴。

yum install openssh-clients
yum install openssh-server

SSH安装完成后,执行如下命令测试一下 SSH 是否可用(SSH首次登陆提示 yes/no 信息,输入 yes 即可,然后按照提示输入 root 用户的密码,这样就登录到本机了),如下图所示。

首次登录SSH.png

但这样登陆需要每次都输入密码,我们需要配置成SSH无密码登陆比较方便。

首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中。

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若提示没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车即可
cat id_rsa.pub >> authorized_keys  # 加入授权
chmod 600 ./authorized_keys    # 修改文件权限

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,如下图所示。

再次登录SSH.png

安装 Java 环境

Java 环境可选择 Oracle 的 JDK,或是 OpenJDK(可看作 JDK 的开源版本),现在一般 Linux 系统默认安装的基本是 OpenJDK,这里安装的是 OpenJDK1.8.0版本的。

有的 CentOS 6.4 默认安装了 OpenJDK 1.7,这里我们可以使用命令检查一下,和 Windows 下的命令一样,还可以查看 JAVA_HOME 这个环境变量的值。

java -version                 # 查看 java 的版本
javac -version              # 查看编译命令 Javac 的版本
echo $JAVA_HOME              # 查看 $JAVA_HOME 这个环境变量的值

如果系统没有安装 OpenJDK,我们可以通过 yum 包管理器来安装。(安装过程中会让输入 [y/N],输入 y 即可)

yum install java-1.8.0-openjdk  java-1.8.0-openjdk-devel  #安装 openjdk1.8.0

通过上述命令安装 OpenJDK,默认安装位置为 /usr/lib/jvm/java-1.8.0,下面配置 JAVA_HOME 时就使用这个位置。

接着需要配置一下 JAVA_HOME 环境变量,为了方便,直接在 ~/.bashrc 中进行设置,相当于配置的是 Windows 的用户环境变量,只对单个用户生效,当用户登录后,每次打开 shell 终端,.bashrc 文件都会被读取。

修改文件,可以直接使用 vim 编辑器打开文件,也可以使用类似于 Windows 记事本的 gedit 文本编辑器。

下面命令任选其一。

vim ~/.bashrc              # 使用 vim 编辑器在终端中打开 .bashrc 文件
gedit ~/.bashrc              # 使用 gedit 文本编辑器打开 .bashrc 文件

在文件最后面添加如下单独一行(指向 JDK 的安装位置),并保存

配置JAVA_HOME环境变量.png

接着还需要让该环境变量生效,执行如下命令。

source ~/.bashrc             # 使变量设置生效

设置好后我们来检验一下是否设置正确,如下图所示。

echo $JAVA_HOME     # 检验变量值
java -version
javac -version
$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

检查JAVA_HOME环境变量是否配置正确.png

这样,Hadoop 所需的 Java 运行环境就安装好了。

安装 Hadoop

在前面软件环境已经给出了 hadoop2.6.5 的下载地址,可以直接通过火狐浏览器打开下载,默认下载位置是在用户的 Home 中的 Downloads 文件夹下,如下图所示。

下载Hadoop.png

下载完成后,我们将 Hadoop 解压到 /usr/local/ 中。

tar -zxf ~/下载/hadoop-2.6.5.tar.gz -C /usr/local    # 解压到/usr/local目录中
cd /usr/local/                          # 切换当前目录为 /usr/local 目录
mv ./hadoop-2.6.5/ ./hadoop            # 将文件夹名改为hadoop
chown -R root:root ./hadoop         # 修改文件权限,root 是当前用户名

Hadoop 解压后即可使用,输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息。

cd /usr/local/hadoop                  # 切换当前目录为 /usr/local/hadoop 目录
./bin/hadoop version                  # 查看 Hadoop 的版本信息

或者直接输入 hadoop version 命令也可以查看。

hadoop version                          # 查看 Hadoop 的版本信息

查看Hadoop版本信息.png

Hadoop 安装方式有三种,分别是单机模式,伪分布式模式,分布式模式。

  • 单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
  • 伪分布式模式:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
  • 分布式模式:使用多个节点构成集群环境来运行Hadoop,需要多台主机,也可以是虚拟主机。

Hadoop 伪分布式配置

现在我们就可以来使用 Hadoop 运行一些例子,Hadoop 附带了很多的例子,可以运行 hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar 看到所有的例子。

我们这里来运行一个查询的例子,将 input 文件夹作为输入文件夹,筛选当中符合正则表达式 dfs[a-z.]+ 的单词,统计它的次数,将筛选结果输出到 output 文件夹中。

cd /usr/local/hadoop      # 切换当前目录为 /usr/local/hadoop 目录
mkdir ./input              # 在当前目录下创建 input 文件夹
cp ./etc/hadoop/*.xml ./input   # 将 hadoop 的配置文件复制到新建的输入文件夹 input 中
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+' 
cat ./output/*               # 查看输出结果

通过命令 cat ./output/* 查看结果,符合正则的单词 dfsadmin 出现了 1次。

运行测试Hadoop例子.png

若运行出错,如出现如下图提示。

运行Hadoop例子出错.png

若出现提示 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,该 WARN 提示可以忽略,不影响 Hadoop 正常运行。

注意:Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 output 文件夹删除。

rm -rf ./output              # 在 /usr/local/hadoop 目录下执行

测试我们的 Hadoop 安装没有问题,我们可以开始设置 Hadoop 的环境变量,同样在 ~/.bashrc 文件中配置。

gedit ~/.bashrc              # 使用 gedit 文本编辑器打开 .bashrc 文件

在 .bashrc 文件最后面增加如下内容,注意 HADOOP_HOME 的位置对不对,如果都是按照前面的配置,这部分可照抄。

# Hadoop Environment Variables
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

Hadoop环境变量的配置.png

保存后记得关掉 gedit 程序,否则会占用终端,无法执行下面的命令,可以按 【Ctrl + C】键终止该程序。

保存后,不要忘记执行如下命令使配置生效。

source ~/.bashrc

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 下,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便,输入命令, gedit ./etc/hadoop/core-site.xml)。

<configuration></configuration> 中间插入如下的代码。

<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://localhost:9000</value>
 </property>
</configuration>

同样的,修改配置文件 hdfs-site.xmlgedit ./etc/hadoop/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 的格式化。(Hadoop 首次启动需要该命令)

hdfs namenode -format

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

NameNode格式化.png

接下来启动 Hadoop。

start-dfs.sh              # 开启 NameNode 和 DataNode 进程

若出现如下 SSH 的提示 “Are you sure you want to continue connecting”,输入 yes 即可。

启动Hadoop注意事项.png

启动完成后,可以通过命令 jps 来判断是否成功启动,若出现下面 NameNode、DataNode、SecondaryNameNode、Jps 四个进程,则 Hadoop 启动成功。

jps                          # 查看进程判断 Hadoop 是否启动成功

判断Hadoop是否启动成功.png

成功启动后,也可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

Hadoop正常启动Web界面.png

启动YARN

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性。(伪分布式不启动 YARN 也可以,一般不会影响程序执行)

上述通过 start-dfs.sh 命令启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

首先修改配置文件 mapred-site.xml,需要先将 mapred-site.xml.template 文件的重命名为 mapred-site.xml。

mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml  # 文件重命名
gedit ./etc/hadoop/mapred-site.xml                                  # 用gedit 文本编辑器打开
<configuration>
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

接着修改配置文件 yarn-site.xml

gedit ./etc/hadoop/yarn-site.xml                                  # 用gedit 文本编辑器打开
<configuration>
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
</configuration>

然后就可以启动 YARN 了,执行 start-yarn.sh 命令。

注意:在启动 YARN 之前,要确保 dfs Hadoop 已经启动,也就是执行过 start-dfs.sh

start-yarn.sh                                # 启动YARN
mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个进程,如下图所示。

启动YARN.png

启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster 如下图所示。

YARN的Web界面.png

YARN 主要是为集群提供更好的资源管理与任务调度,如果不想启动 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。

关闭 YARN 的命令如下,开启是 start,关闭是 stop。

stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver

在平时的学习中,我们使用伪分布式就足够了。

火狐回答于

这是我在网上下的hadoop1.1.2的eclipse插件的地址:http://download.csdn.net/detail/cenyuhaiwork/5716051

  下载完毕之后,把它放入eclipse目录的dropins文件夹中即可,然后重启eclipse。

  打开windows preferences 中,发现有Hadoop Map/Reduce就说明已经成功了。

     打开window show View ,选择Map/Reduce Locations

编辑Map/Reduce Locations

修改成实际的Ip地址和端口即可。

  设置完毕,开始新建工程。

  点击File,新建工程,选择Map/Reduce Project.

     新建工程之后,然后新建一个类,我们可以把工程里面的examples里面的WorkCount拿出来试验一下,直接点调试即可开始,就像我们正常调试程序一样。examples里面还提供了其他很多的例子,大家可以去看看挺好的。

  好了,现在我们开始进入hadoop源码的调试当中,在调试之前我们首先要把源码处理成不报错的状态。

      把源码导入eclipse当中,源码可以在发布版的hadoop的src文件夹中找,然后我们导入jar,右键点击属性,选择java Build path,点击add jars,把发布版的lib文件夹中所有的jar包都导入。

       然后我们再点击Source标签页,去掉多余的内容,我们只需要编译核心的几个目录即可,多编译因为缺少一些别的jar包报错,比如ant的。

       先删掉原来的src目录,然后重新添加,我点Add Folder添加了一下目录,别的我就没有编译了。

       然后再点击左侧的Java Compiler,选择子项Error/Warnning ,如下图所示,把Error改成Warning.

         点击Ok,设置完毕,可以开始Build啦。

         好,我们打开hadoop生产环境下的bin目录下的hadoop,我们以调试NameNode为例子,找到elif ["COMMAND" = "namenode"]这一段,在HADOOP_OPTS

         的字符串后面,添加-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000。

         其中suspend表示是否挂起等待调试连接,这里我没有让它挂起,有需要的朋友可以改成y,让它挂起,那样效果很明显,一直等着你连接。

         这边就算设置完毕了。可以启动hadoop,命令行会出现,8000端口已经被监听的提示,然后在Eclipse这边打开NameNode的代码,打上断点,然后打开Debug Configurations 面板,在左侧选择Remote Java Application,如下图:

        点击Debug,然后进入熟悉的debug页面就是成功啦!

大力发达回答于

hadoop分布式集群环境搭建规划

DKH大数据通用计算平台

1、分布式机器架构图:

分布式机器架构

其中机器1主节点,机器2从节点,机器3、机器4等都是计算节点。当主节点宕机后从节点代替主节点工作,正常状态是从节点和计算节点一样工作。这种架构设计保证数据完整性。

首先我们保证每台计算节点上分别有一个DataNode节点和NodeManager节点。因为都是计算节点,真正干活的。在数量上我们要保证。那么NameNode和ResourceManager是两个非常重要的管理者,我们客户端的请求,第一时间与NameNode和ResourceManager打交道。NameNode负责管理HDFS文件系统的元数据,客户端不管是读文件还是写文件,都要首先找到NameNode获取文件的元数据,再进行文件的操作。ResourceManager也是如此,它负责管理集群中的资源和任务调度,你也可以把它视为“大数据操作系统”。客户端能否提交应用并运行,就看你的ResourceManager是否正常。

2、达到多大规模的数据,才值得用大数据的方式来处理?

第一,从数据量角度,但是并无确定的答案,一般定性角度来说,你觉得这个数据量单机处理不了,比如内存限制,时间过久等,就用集群,但是要降低时间,你的处理逻辑必须能分布式处理,定量就是一般数据或者未来的数据量会达到PB级别(可能GB)或以上就要用分布式,当然前提也是你的处理逻辑可以进行分布式。

第二,从算法角度,或者处理逻辑的时间复杂度来说,比如虽然你的数据记录不是很多,但是你的算法或者处理逻辑的时间复杂度是n的平方,甚至更高,同时你的算法可以进行分布式设计,那么就考虑用分布式,比如你的记录虽然只有1w, 但是时间复杂度确是n的平方,那么你想想单机要多久,要是你的算法可以进行分布式处理,那么就考虑用分布式。

3、制约大数据处理能力的几个问题

a、网络带宽

网络是联接计算机的纽带,这个纽带当然越宽越好,这样可以在计算机资源许可的情况下,在单位时间内传输更多的数据,让计算机处理更多的数据。现在企业网络中,普遍采用的多是百兆网络,也有千兆,万兆虽然有,但是用得不多。

b、磁盘

所有数据,不管它从哪里来,最终都要存进不同的硬盘里面,或者闪存盘。闪存盘的读写效率比硬盘高得多,但是缺点也明显:价格贵、容量小。现在的存储介质主要还是硬盘,硬盘有顺序读写和随机读写两种模型。顺序读写是磁头沿着磁道,好象流水线一样,有规律的向前滚动进行。随机读写是磁头跳跃着,找到磁道上留空的地方,把数据写进去。很明显,顺序读写比随机读写效率高,所以系统架构师在设计大数据存储方案时,都是以顺序读写为主要选择。

c、计算机的数量

分布式的集群环境下,计算机的规模当然越大越好。这样在数据等量的情况下,计算机数量越多,分配给每台计算机的数据越少,处理效率自然就高了。但是计算机的数量也不是可以无限增加,集群对计算机规模的容纳有一个峰值,超过这个峰值,再提升就很困难,处理不好还会下降。原因主要来自木桶短板效应、边界效应、规模放大效应。根据多年前的一个测试,当时以Pentium 3和Pentium 4芯片为基础平台,配合100M网络,在上面运行LAXCUS大数据系统。当达到千台计算机的规模时,瓶颈开始显露出来。如果现在用新的X86芯片,加上更高速的网络,应该是能够容纳更多的计算机。

d、代码质量

这不是关键问题,但是是企业必须关注的一个问题。这和程序员编写的计算机代码质量有关。实际上,每个大数据产品都是半成品,它们只是提供了一个计算框架,要实际应用到企业生产中,里面还有大量业务编码需要程序员来实现。要使大数据应用达到高质量,技术负责人要做好前期设计,清楚和规范业务流程,程序员拿到方案后,用统一格式编写代码。这是双方互相配合的过程。或者说,要做好协同和协调的事情。

Amor陌a回答于

首先下载虚拟机​​并将其安装在Windows机器上—— 就像安装任何音乐播放器一样简单。不断点击下一步直到安装完成。安装完成后,解压Cloudera-Udacity-4.1,然后双击VM快速启动器; 点击“打开虚拟机” 并从包含vmx的文件夹中选择提取的镜像文件。安装需要一些时间。请记住将RAM设置为1GB,否则您的机器会很慢。安装成功后,启动虚拟机,您将看到如图2所示的屏幕。

现在,为了与机器交互,应建立SSH连接;,在终端中输入以下命令。首先安装客户端,然后安装服务器。SSH密钥将由此生成,并可与群集中的其他计算机共享从而连接在一起。

1. sudo dpkg -i openssh-client_1%3a5.3p1-3ubuntu7_i386.deb2.sudo dpkg -i openssh-server_1%3a5.3p1-3ubuntu7_i386.deb

现在,要在UNIX端安装Java,首先下载JDK:

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

以root账户创建目录,从上面下载的tar文件安装JDK,重新启动终端,并如图3那样在文件后追加/ etc / profile。

安装了VM和Java之后,让我们安装Hadoop。下载的tar文件可以使用命令解压缩

sudo tar vxzf hadoop-2.2.0.tar.gz –C/usr/local

图1:SumReducer(求和例子)

现在,需要更改一些配置文件才能执行Hadoop。

具体细节如下:

1.在hadoop-env.sh中添加:

export JAVA_HOME = / usr / lib / jvm / jdk / <java 的版本>

2.在core-site.xml中,添加以下内容:

<property> <name>fs.default.name</name> 
<value>hdfs://localhost:9000</value></property>

3.在yarn-site.xml中, 添加以下命令:

<property> <name> yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> </property><property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value></property>

4.在mapred-site.xml中,复制mapred-site.xml.template并将其重命名为mapred-site.xml,然后添加以下内容:

<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>

5.在hdfs-site.xml中,在配置选项卡之间添加以下内容:

<property> <name>dfs.replication</name> <value>1</value></property>
<property> <name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/mydata/hdfs/namenode</value></property>
<property> <name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/mydata/hdfs/datanode</value></property>

6.最后,更新你的.bashrc文件。追加以下行,保存并退出。

#Hadoop variablesexport JAVA_HOME=/usr/lib/jvm/jdk/<你的java版本>export 
HADOOP_INSTALL=/usr/local/hadoopexport 
PATH=$PATH:$HADOOP_INSTALL/binexport 
PATH=$PATH:$HADOOP_INSTALL/sbinexport 
HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport 
HADOOP_COMMON_HOME=$HADOOP_INSTALLexport 
HADOOP_HDFS_HOME=$HADOOP_INSTALLexport 
YARN_HOME=$HADOOP_INSTALL

图2:WordMapper

图3:OutputBrowser

最后,让我们生成name节点和data节点目录,需要在终端中输入命令。

hdfs namenode –format

启动Hadoop和Yarn服务,请键入:

start-dfs.sh and start-yarn.sh

现在整个配置完成并且Hadoop已启动并正在运行。我们将在Eclipse中编写Java程序,查找文件中的单词出现的次数并通过Hadoop执行它。这三个Java文件是(图4,5,6):

  • WordCount.java
  • SumReducer.java
  • WordMapper.java

现在创建JAR并将其移至Ubuntu端。在终端上,使用以下命令执行jar文件:

hadoop jar new.jar WordCount example.txt Word_Count_sum

example.txt是输入文件(它的词数需要统计)。

思潮澎湃轻描淡写的生活,但思潮澎湃回答于

由于hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体的安装此处不作过多介绍,只作需要用到的知识介绍。

VMware的安装,装好一个虚拟机后利用复制虚拟机的方式创建后面几个虚拟机,省时省力,需要注意的是需要修改每个虚拟机的IP与主机名。

所有虚拟机采用NAT模式上网,而且要保证与物理主机的IP互相能访问。

需要注意的几个问题。nat如果上网首先需要查看物理机(pc机)这个服务器已经启动。上网的原理:流量是走的物理网卡,但是它的ip,却是和物理机没有关系的。 也就是说,无论你怎么更换网络环境,你的虚拟机都不需要做改变。这就是它的优点。

首先在安装VMware 之后,我们会看到多了两个网卡

这个如果经过网络配置的折磨,应该能找到着两个网卡:vmnet1和vmnet8,这里讲的是vmnet8。

重点看右侧第三图你会看到ip地址,这个ip地址,因个人而异,也就是说不同网络,不同环境,这个ip变化的概率是很大的。可能是192.168.0.1等等。这里也相当于我们编程的一个变量,这里是需要你根据你的环境来赋值的,建议vmnet1到vmnet8分别设置192.168.10.1到192.168.80.1,好作区分。

上面我们通过看到的虚拟机网卡的ip,为了避免混肴,上面的虚拟网卡和本地网络适配器处于同一界面。如下图

而下面则是在打开虚拟机之后,通过菜单弹出

弹出之后,我们在看一下虚拟机的(交换机)vmnet8.

可以看到vmnet8子网ip和虚拟机网卡是出于同一个网段的。同时在右侧net设置界面,我们可以看到网关为:192.168.106.2,改成192.168.80.2 虚拟机的设置会用到。

Linux基础知识

Linux的学习也是一个过程,因为可能你连最简单的开机和关机命令都不会,更不要谈配置网络。这里面给大家提供刚开始学习所查阅的资料和经验总结。

首先我们需要使用一些命令,进行网络配置,但是在网络配置中,这里面又必须懂得虚拟机的一些知识,所以前面的虚拟机知识需要掌握扎实一些。

在此注意CentOS7与CentOS6的命令有些不同,会一些常用命令是必备,每次开机或启动解压安装授权都是最基本的知识,其它的可以暂时不用学。

CentOS中安装java环境

下载对应32或64位jdk,设置好JDK环境变量PATH,具体的配置可自行Google。

环境准备

修改机器名,每个系统中都要修改成这样。

打开终端,切换到root用户下修改机器名称。

$ sudo su $ vim /etc/sysconfig/network

在其中添加“HOSTNAME=H32”

添加每个服务器IP对应的机器名

三个ip地址都添加到各自的/etc/hosts文件中

每个系统中都要修改成这样

#编辑hosts vim /etc/hosts

关闭SELinux

#编辑 SELinux 配置文件 vim /etc/selinux/config

#改状态 SELINUX=disabled

SSH设置

进入H30,查看ssh是否安装,如果有,继续,没有安装下。

rpm -qa|grep ssh

关于ssh的安装参考 :

如何实现两台服务器间无密码的传输数据和操作

时间服务器安装

这里需要安装时间服务器,其他的服务器通过这个来进行多机器时间的同步,分布式部署时机器时间不一致会导致数据错误或组件内通讯错误。

安装httpd服务

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

安装yum-utils

yum install yum-utils 用于在线yum安装 它是基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。(需要机器能访问外网)

准备资源和环境

下载Centos 7.2 的iso安装镜像,jdk1.8 for Linux压缩包,hadoop2.7.3压缩包(本来用hadoop3,发现后面不兼容hive的最新版本)

Java基础知识

由于Hadoop框架源码都是以java来写,因此最好都以java作为开发的最佳语言,虽然说有些用C#做了封装,但性能已大打折扣。

Eclipse IDE使用

Linux和Windows下源码编译技术

还有最重要的是你的网速要好,因为安装过程中会下载依赖包,网不好会卡到你怀疑人生。

最后还需要有耐心,每台机子的环境都不一样,而且每个人下载的包的版本也有可能不一样 会导致各种问题,此时就需要耐心的去看日志,不停的尝试和仔细的对比安装步骤,可能就是少了个变量 或大小写错误或是要重启。

艾迦号游戏程序员、《游戏引擎架构》译者回答于

扫码关注云+社区