Hadoop版本
虽然CDH与社区版没有什么区别,但是推荐使用CDH版本,如果使用社区版,以后在生产环境中与其他框架整合时会有jar包冲突的问题。
CDH相关软件包下载地址:http://archive.cloudera.com/cdh5/cdh/5/
Hadoop使用版本:hadoop-2.6.0-cdh5.15.1
这里hadoop版本与社区版的hadoop2.6.0并不是同一个版本,而是cdh自定义的一个版本。所有的框架都与后面的cdh5.15.1版本一致。
Hadoop安装的前置条件
- JDK 1.8+
- ssh
安装JDK1.8
- 下载JDK:jdk-8u144-linux-x64.tar.gz
- 解压JDK:tar -zxvf jdk-8u144-linux-x64.tar.gz
- 添加环境变量,到
/etc/profile
文件中:
JAVA_HOME=/usr/jdk1.8.0_144
HADOOP_HOME=/home/duandingyang/app/hadoop-2.8.5
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
- 使环境变量生效:
source /etc/profile
- 检查是否安装成功:
java -version
安装SSH免密登录
首先在home
目录下查看是否有.ssh
文件夹,如果没有,则需要生成这个.ssh
文件夹.
- 首先测试,输入命令
ssh localhost
,如果显示类似下面的界面,需要输入密码,说明没有配置ssh免密登录:
- 在
home
目录下就会生成一个.ssh
目录 - 输入命令
ssh-keygen -t rsa
,一路回车就会在.ssh
目录下生成id_rsa
和id_rsa.pub
,其中id_rsa
表示私钥,id_rsa.pub
表示公钥。 - 将公钥写入authorized_keys,
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 修改
authorized_keys
权限,chmod 600 authorized_keys
至此,ssh免密登录就配置完成
测试一下:ssh localhost
不需要输入密码就可以登录进去
安装成功!
安装Hadoop(HDFS)
- 首先下载好Hadoop的CDH版本:hadoop-2.6.0-cdh5.15.1.tar.gz
- 解压hadoop-2.6.0-cdh5.15.1.tar.gz:
tar -xvf hadoop-2.6.0-cdh5.15.1.tar.gz -C ~/app
解压后的文件夹内容如下:
- bin文件夹下:存放客户端命令
- etc文件夹下:有一个hadoop文件夹,存放hadoop配置文件
- sbin文件夹:存放启动hadoop相关进程的脚本
- lib文件夹:存放一些依赖包
- share文件夹:常用的一些例子
- 添加
HADOOP_HOME/bin
到系统环境变量 - 修改Hadoop配置文件,$HADOOP_HOME/etc/hadoop/hadoop-env.sh
配置JAVA_HOME:export JAVA_HOME=/usr/jdk1.8.0_144
- 修改Hadoop配置文件,$HADOOP_HOME/etc/hadoop/core-site.xml
配置文件系统路径:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- 修改Hadoop配置文件,$HADOOP_HOME/etc/hadoop/hdfs-site.xml
配置副本系数:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
因为我们目前只有一个节点,所以副本数设置为1,之后变为分布式之后可以改为3
7. 修改Hadoop配置文件,因为默认情况下,文件的存放路径hadoop.tmp.dir =/tmp/hadoop-${user.name}
,我们知道/tmp
目录在服务器重启之后会自动删除,为了防止这种现象发生,我们重新制定文件的存放路径。
修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/duandingyang/tmp/hadoop-tmp</value>
</property>
</configuration>
- 修改$HADOOP_HOME/etc/hadoop/slaves
localhost
至此,HDFS就配置完成了。
测试启动HDFS
第一次启动HDFS时,一定要格式化文件系统,不要重复执行
- 格式化HDFS文件系统:
hdfs namenode -format
,这时如果查看/home/duandingyang/tmp/hadoop-tmp
,会发现里面有数据了。 - 启动集群
~/app/hadoop-2.6.0-cdh5.15.1/sbin$ ./start-dfs.sh
19/10/13 01:42:37 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/duandingyang/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-duandingyang-namenode-ubuntu.out
localhost: starting datanode, logging to /home/duandingyang/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-duandingyang-datanode-ubuntu.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/duandingyang/app/hadoop-2.6.0-cdh5.15.1/logs/hadoop-duandingyang-secondarynamenode-ubuntu.out
19/10/13 01:42:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [localhost]
可以先忽略。
输入jps
查看:
duandingyang@ubuntu:~/app/hadoop-2.6.0-cdh5.15.1/sbin$ jps
11304 Jps
11192 SecondaryNameNode
11034 DataNode
10908 NameNode
这样就启动成功了,可以通过浏览器访问ip:50070
如果发现jps正常,但是浏览器打不开这个地址,查看防火墙是否关闭。
测试停止HDFS
使用命令~/app/hadoop-2.6.0-cdh5.15.1/sbin$ ./stop-dfs.sh
,输出如下:
19/10/13 01:57:22 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
19/10/13 01:57:41 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
输入jps查看:
~/app/hadoop-2.6.0-cdh5.15.1/sbin$ jps
11730 Jps
相关进程已经停止
start/stop-dfs.sh与hadoop-daemons.sh的关系
start-dfs.sh 相当于执行了hadoop-daemon.sh start namenode
,hadoop-daemon.sh start datanode
,hadoop-daemon.sh start secondarynamenode
stop-dfs.sh相当于执行了hadoop-daemon.sh stop namenode
,hadoop-daemon.sh stop datanode
,hadoop-daemon.sh stop secondarynamenode