共计 10916 个字符,预计需要花费 28 分钟才能阅读完成。
注意:以下实践实在 Ubuntu 14.0.4 以及 Hadoop2.7.2 所做的,如果环境不同,效果可能不理想。
首先,以下默认我们已经下载好了 jdk 以及 hadoop 的压缩包,没有的话,需要这里 ->JDK 下载 | Hadoop 下载下载
一. 配置 jdk
Ubuntu 默认是使用的 OpenJDK,似乎也可以,不过因为惯性,我还是先配置了 Sun 的 JDK,以防万一。
- 修改环境文件
运行命令:sudo gedit ~/.bashrc
末尾另起一行加入
export JAVA_HOME=[your_jdk_path]
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
例如:
export JAVA_HOME=/home/lq/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
修改 bashrc 文件,可以参考文章设置 Linux 环境变量的方法和区别 http://www.linuxidc.com/Linux/2015-02/113488.htm
二. 设为默认 jdk
命令行中输入命令
sudo update-alternatives --install /usr/bin/java java [your_jdk_path]/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac [your_jdk_path]/bin/javac 300
例如:
sudo update-alternatives --install /usr/bin/java java /home/lq/jdk1.8/bin/java 300`
sudo update-alternatives --install /usr/bin/javac javac /home/lq/jdk1.8/bin/javac 300`
三. 配置 ssh:
因为是 hadoop 伪分布试配置,hadoop 需要设置 ssh 登录,一般设为无密码登录
1. 安装 SSH server
运行命令:sudo apt-get install openssh-server
2. 登录
运行命令:ssh localhost
3. 配置无密码登录
运行以下 4 条命令:
exit
#退出刚才的 ssh localhost
cd ~/.ssh/
# 若没有该目录,请先执行一次 ssh localhost
ssh-keygen -t rsa
# 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys
# 加入授权
四. 配置 Hadoop 环境
运行命令:sudo gedit ~/.bashrc
末尾加入如下语句:
export HADOOP_HOME=[your_hadoop_path]
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
例如:
export HADOOP_HOME=/home/lq/hadoop-2.7
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
五. 修改 Hadoop 默认的配置文件
- 修改 hadoop-env.sh 文件
在文件中找到export JAVA_HOME=${JAVA_HOME}
,修改为export JAVA_HOME=[your_jdk_path]
例如:export JAVA_HOME=/home/lq/jdk1.8
-
在 hadoop 的目录中找文件夹 etc,修改其中的 core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:[your_hadoop_temp_path]</value>// 这里填写的是你的 hadoop 的临时文件夹,一般放到 hadoop_home 文件夹的目录下 <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
例如:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
-
修改 hdfs-site.xml 文件
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:[your_hadoop_temp_path]/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:[your_hadoop_temp_path]/tmp/dfs/data</value> </property> </configuration>
例如:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp/dfs/data</value>
</property>
</configuration>
六. 启动 hadoop
- 首先需要先格式化 namenode,在 hadoop 的安装目录下执行
bin/hadoop namenode -format
这条语句执行一次就可以了,无需次次启动都执行,成功的话会有下面图片上的信息 而且格式化 namenode 会造成 HDFS 文件系统内的数据丢失,如果有重要数据的话需要先保存。
另外,遇到格式化不成功的情况,再次启动 hadoop,使用 jps 语句查看会发现 Datanode 进程不存在,这时可以将 hadoop 的临时目录(在 hdfs-site.xml 中配置的)清空后再次格式化、启动,就可以了。
* 启动 hadoopsbin/start-all.sh
启动后使用命令 jps
可查看现在运行的 java 进程,如下
- 停止 hadoop
sbin/stop-all.sh
如你所想,启动和停止命令是两个总命令,还可以通过两个小命令(start-dfs.sh start-yarn.sh stop-dfs.sh stop-yarn.sh)实现同样的功能。
至此,如果启动关闭过程中命令行没有报错,那么就配置成功了。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-11/148471p2.htm
使用 eclipse 开发 Hadoop 而不是使用记事本 + 命令行是一种进步吧,那么为了这种进步,首先我们需要配置 eclipse
之前我试过在 windows 下运行 eclipse 连接虚拟机中的 hadoop,后来觉得速度简直不能忍,而且软件反应也慢,所以我推荐在虚拟机中使用 eclipse。
好在使用 eclipse 配置 hadoop 开发环境,在 Ubuntu 和 windows 下完全一样,所以以下部分有共同之处。
1. 下载 eclipse 和 Hadoop 插件
eclipse 下载地址
eclipse-hadoop 插件下载地址
下载推荐自己去官网下载,而不是用 Ubuntu 的软件市场,一是因为软件市场里的 eclipse 版本较低,二是因为软件市场里安装的 eclipse 不好找到安装位置,不便于找到 plugins 文件夹拷贝 hadoop 的插件。
2. 配置 eclipse
下载好后,解压,把文件夹放到合适的地方(你喜欢的地方),然后将下载的 eclipse-hadoop-plugins 插件粘贴到 eclipse 的 plugins 目录下,启动 eclipse。
1. window->Preference-> 左侧 Hadoop Map/Reduce-> 右侧 browse , 选择 Hadoop 的安装目录
2. 然后在 eclipse 的 window 选项卡下找到 show view->other-> 选择 Map/Reduce Tool 下的 Map/Reduce Location 即可
3. 同时,最好将 Project Explorer 的 View 也选中,这时,在 Project Explorer 中可以看到一个 DFS Location 的文件夹,Hadoop 的 HDFS 文件系统的文件都会显示在这里,之后我们开发就不用使用命令行向 HDFS 中拷贝文件了,直接在这里拷贝就行。
3. 连接 Hadoop
首先保证 Hadoop 已经正常运行起来。
在 Map/Reduce Location 的 view 中右键 new hadoop location,在弹出窗口中配置如下信息
应当注意,这些信息与我们曾经在“Ubuntu 虚拟机下配置 Hadoop 开发环境(1)”中第 5 步配置 core-site.xml 的配置是一致的
配置好后,新建工程选项 Map/Reduce project 就可以建立 hadoop 的工程了
这里有一点:我们工程里没有 hadoop 的 library 怎么办?
我的笨办法是从 hadoop 的安装目录的 share/hadoop 下将常见的 library 的 jar 包拷贝出来一份,组成一个 library 导入到 hadoop 工程的 Build Path 中. 常见的 jar 包分别是 common、hdfs、yarn、mapreduce 目录下的 jar 以及下一层目录 lib 中的 jar 包。更好的办法是使用 Ant 和 Maven 构建工程。
参考:搭建 Hadoop2.6.0+Eclipse 开发调试环境
注意:以下实践实在 Ubuntu 14.0.4 以及 Hadoop2.7.2 所做的,如果环境不同,效果可能不理想。
首先,以下默认我们已经下载好了 jdk 以及 hadoop 的压缩包,没有的话,需要这里 ->JDK 下载 | Hadoop 下载下载
一. 配置 jdk
Ubuntu 默认是使用的 OpenJDK,似乎也可以,不过因为惯性,我还是先配置了 Sun 的 JDK,以防万一。
- 修改环境文件
运行命令:sudo gedit ~/.bashrc
末尾另起一行加入
export JAVA_HOME=[your_jdk_path]
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
例如:
export JAVA_HOME=/home/lq/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
修改 bashrc 文件,可以参考文章设置 Linux 环境变量的方法和区别 http://www.linuxidc.com/Linux/2015-02/113488.htm
二. 设为默认 jdk
命令行中输入命令
sudo update-alternatives --install /usr/bin/java java [your_jdk_path]/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac [your_jdk_path]/bin/javac 300
例如:
sudo update-alternatives --install /usr/bin/java java /home/lq/jdk1.8/bin/java 300`
sudo update-alternatives --install /usr/bin/javac javac /home/lq/jdk1.8/bin/javac 300`
三. 配置 ssh:
因为是 hadoop 伪分布试配置,hadoop 需要设置 ssh 登录,一般设为无密码登录
1. 安装 SSH server
运行命令:sudo apt-get install openssh-server
2. 登录
运行命令:ssh localhost
3. 配置无密码登录
运行以下 4 条命令:
exit
#退出刚才的 ssh localhost
cd ~/.ssh/
# 若没有该目录,请先执行一次 ssh localhost
ssh-keygen -t rsa
# 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys
# 加入授权
四. 配置 Hadoop 环境
运行命令:sudo gedit ~/.bashrc
末尾加入如下语句:
export HADOOP_HOME=[your_hadoop_path]
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
例如:
export HADOOP_HOME=/home/lq/hadoop-2.7
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
五. 修改 Hadoop 默认的配置文件
- 修改 hadoop-env.sh 文件
在文件中找到export JAVA_HOME=${JAVA_HOME}
,修改为export JAVA_HOME=[your_jdk_path]
例如:export JAVA_HOME=/home/lq/jdk1.8
-
在 hadoop 的目录中找文件夹 etc,修改其中的 core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:[your_hadoop_temp_path]</value>// 这里填写的是你的 hadoop 的临时文件夹,一般放到 hadoop_home 文件夹的目录下 <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
例如:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
-
修改 hdfs-site.xml 文件
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:[your_hadoop_temp_path]/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:[your_hadoop_temp_path]/tmp/dfs/data</value> </property> </configuration>
例如:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/lq/hadoop-2.7/tmp/dfs/data</value>
</property>
</configuration>
六. 启动 hadoop
- 首先需要先格式化 namenode,在 hadoop 的安装目录下执行
bin/hadoop namenode -format
这条语句执行一次就可以了,无需次次启动都执行,成功的话会有下面图片上的信息 而且格式化 namenode 会造成 HDFS 文件系统内的数据丢失,如果有重要数据的话需要先保存。
另外,遇到格式化不成功的情况,再次启动 hadoop,使用 jps 语句查看会发现 Datanode 进程不存在,这时可以将 hadoop 的临时目录(在 hdfs-site.xml 中配置的)清空后再次格式化、启动,就可以了。
* 启动 hadoopsbin/start-all.sh
启动后使用命令 jps
可查看现在运行的 java 进程,如下
- 停止 hadoop
sbin/stop-all.sh
如你所想,启动和停止命令是两个总命令,还可以通过两个小命令(start-dfs.sh start-yarn.sh stop-dfs.sh stop-yarn.sh)实现同样的功能。
至此,如果启动关闭过程中命令行没有报错,那么就配置成功了。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-11/148471p2.htm
在 Windows 下配置,还需要当心 IP 地址和 eclipse 配置时的问题,这需要单独说一下。
在 Ubuntu 下 eclipse 新建 HadoopIP 直接填 localhost 就好,但是在 Windows 下肯定是不行的,它需要连接到虚拟机中的 hadoop,这里涉及到配置虚拟机 Ubuntu 的固定 IP,还设计到 telnet 服务,比较麻烦,我们一个一个讲(所以说,还是推荐在 Ubuntu 下使用 eclipse 连接 hadoop)
1. 配置虚拟机 IP 地址:
这一步,这个教程的简单粗暴就体现出来了,如何简单地固定虚拟机的 IP 地址呢。传统的固定 IP 的方法是在 VMware 设置完后,再在 Ubuntu 中设置获取 IP 的方法,这种方法当然结果一定正确,也最普适。这里有一篇文章讲到这种方法 VMware 下 Ubuntu 14.04 静态 IP 地址的设置方法 见 http://www.linuxidc.com/Linux/2017-11/148470.htm
我觉得上面提到的方式太复杂了,没有照着做。
我的方法是:
在 VMware 中 -> 编辑 -> 虚拟网络编辑器 ->Vmnet8-> 修改最下面显示的子网 IP,比如改为 192.168.100.0 -> 再修改 DHCP 设置中的开始 IP 和结束 IP,比如开始 IP 改为 192.168.100.128, 结束 IP 改为 192.168.100.129
附图
这种方法的好处是不需要再在 Ubuntu 中设置什么了,Ubuntu 如果联网,一定只能获取一个 IP,按照这里的修改方法,IP 为 192.168.100.128。当然,缺点也是很明显的,所有 VMware 下的虚拟机都是这一个 IP,如果要多开虚拟机的话一定会有问题。不过我们这是 Hadoop 伪分布式配置,只使用一个虚拟机,而且多个虚拟机我的笔记本电脑也受不了,所以这个问题目前不用考虑。
2. 配置 talnet 服务
- Windows 连接 Ubuntu 需要 talnet 服务,Windows 默认可能是关闭这个服务的,我们需要首先到控制面板 -> 程序与功能 -> 左侧面板 找 启动或关闭 Windows 功能 -> 找到 talnet 客户端,打对勾开启功能
然后,Ubuntu 默认也是没有这项功能的,需要我们自己安装
- 安装 openbsd-inetd,运行命令:
sudo apt-get install openbsd-inetd
- 然后是 telnet,运行命令:
sudo apt-get install telnet
-
配置,运行命令:
sudo gedit /etc/inetd.conf
在打开的文件中加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
- 1
- 2
-
重启 openbsd-inetd,运行命令:
sudo /etc/init.d/openbsd-inetd restart
-
使用命令
netstat -a | grep telnet
命令查看是否开启 telnet
没有任何显示的话就是没开启,开启的话,在 Windows 下命令行输入 talnet 192.168.100.128
会显示一个没有文字的黑框或者提示登陆,注意,这里的 IP 地址也是我们在 VMvare 中配置的
3. Ubuntu 配置 hadoop 的 IP
这一步比较混乱,我试了好久,糊里糊涂找到一种可行的方法,却想不清楚缘由。
- 首先修改 hosts 文件,将 VMware 分配的固定的 IP 加入:这里,我直接将原先有的 127.0.0.1 ubuntu 改成了 192.168.100.128 ubuntu,没有问题。
- 修改 hadoop 下的 core-site.xml 文件:
这个文件中,我们曾配置过 IP 地址为 localhost,现在,我们为了 Windows 连接到 hadoop,将其改为 192.168.100.128,保存 -
启动 hadoop,在 hadoop 文件下打开命令行,输入
sbin/start-all.sh
-
测试
这个时候在 ubuntu 的命令行里输入netstat -a | grep tcp
应该能看到 192.168.100.128(我的对应主机名正是 ubuntu)下有监听端口 9000。在 Windows 中也打开命令行 telnet 相应端口,输入telnet 192.168.100.128 9000
, 没有问题的话会像之前测试 telnet 功能一样只显示一个黑框
4. 配置 Windows 下的 eclipse
这里就和上一篇博文中提到的 ubuntu 下配置 eclipse 大同小异了
1. 首先,将 hadoop-eclipse 插件放入 eclispe 安装目录的 plugins 目录下
2. window->Preference-> 左侧 Hadoop Map/Reduce-> 右侧 browse , 选择 Hadoop 的安装目录
3. 然后在 eclipse 的 window 选项卡下找到 show view->other-> 选择 Map/Reduce Tool 下的 Map/Reduce Location 即可。同时,这时,在 Project Explorer 中可以看到一个 DFS Location 的文件夹,Hadoop 的 HDFS 文件系统的文件都会显示在这里,之后我们开发就不用使用命令行向 HDFS 中拷贝文件了,直接在这里拷贝就行
4. 连接 hadoop
首先确保 Ubuntu 的 hadoop 正常启动,然后在 Windows 下的 eclipse 中新建一个 hadoop,配置如图:
IP 输配置好的(我的是 192.168.100.128),端口是 9001,另一个选项栏打对勾(选中是伪分布模式),端口是 9000(到此位置和在 Ubuntu 下的配置相同)。然后另一个选项卡找 hadoop.tem.dir,填 Ubuntu 下 hadoop 的临时文件目录,与 core-site.xml 中配置的是一样的。确认,等一会儿就会出现 hadoop 的文件夹了(速度比较慢)
至此,不出意外的话 Windows 下 eclipse 就连接到虚拟机中的 hadoop 了。不得不说,两边开两个重型软件,我的电脑比较卡,还是在 Ubuntu 下用 Eclipse 感觉流畅一些。
Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署 http://www.linuxidc.com/Linux/2017-04/143095.htm
Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm
使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm
Ubuntu 14.04 下 Hadoop 集群安装 http://www.linuxidc.com/Linux/2017-02/140783.htm
CentOS 6.7 安装 Hadoop 2.7.2 http://www.linuxidc.com/Linux/2017-08/146232.htm
Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群 http://www.linuxidc.com/Linux/2017-07/145503.htm
CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 http://www.linuxidc.com/Linux/2017-09/146864.htm
CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建 http://www.linuxidc.com/Linux/2017-06/144932.htm
Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程 http://www.linuxidc.com/Linux/2017-06/144926.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148471.htm