[NOTE] 安装hadoop相关注意事项
linux在启动过程中通过读取
/etc/profile
文件中内容完成相关环境的载入,而ssh登陆远程主机的时候并不会加载/etc/profile中的配置文件。因此jdk安装完成后需要两次配置,一为配置
/etc/profile
中的环境变量,二将hadoop启动脚本中调用的HADOOP_HOME
改为绝对路径的形式。
一、操作系统环境
- 依赖软件ssh、jdk
- jdk安装:
rpm -i jdk-xxxx.rpm
通过rpm安装jdk,会发现一个有趣的现象,使用whereis java
时,系统会给出java安装在/usr/bin/java
,但事实上,/usr/bin/java
引出了一个指向/usr/java
的软链接,而在/usr/java
中,存在两个软链接,default
指向latest
,latest
指向jdk1.x.x_xxx-xxx
,且,通过rpm安装的java环境是不全的,java/bin
目录下只有少数指令我们可以直接调取,而如jps
一般的指令并未添加到系统的环境变量中; - 解决:
sudo vi /etc/profile
文末添加export JAVA_HOME=/usr/java/jdk1.x.x_xxx-xxx
,并在系统路径中增加PATH = $PATH:$JAVA_HOME/bin
source /etc/profile
- jdk安装:
- 环境配置
- java_home(/etc/profile)
- 免密
- 时间同步
- hosts、hostname
二、hadoop部署
/opt/hadoop/ (/opt目录专门用于放第三方源的软件,注意/与/usr/local的区别)
/etc/profile
文件中加入export HADOOP_HOME=/opt/hadoop
、PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
启动脚本修改
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
$HADOOP_HOME/etc/hadoop/mapred-env.sh
$HADOOP_HOME/etc/hadoop/yarn-env.sh
配置文件修改
配置文件形式如下,
property
中包含name:value
对,之后的内容中将只会说明需要配置的name:value
。1
2
3
4
5
6<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/core-site.xml
Parameter Value Notes fs.defaultFS
NameNode URI hdfs://host:port/ io.file.buffer.size
131072 Size of read/write buffer used in SequenceFiles. hadoop.tmp.dir /tmp/hadoop-${user.name} Linux内核在必要时会删除/tmp目录下文件,同时 hdfs-site.xml
中的dfs.namenode.name.dir
与dfs.datanode.data.dir
也使用了$hadoop.tmp.dir
的参数,这会造成数据的丢失,因此必须修改。改为/var/hadoop/local
etc/hadoop/hdfs-site.xml
- configurations for NameNode:
Parameter Value Notes dfs.namenode.name.dir
NN对命名空间及日志文件进行持久化的地址。 If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. dfs.hosts
/dfs.hosts.exclude
List of permitted/excluded DataNodes. If necessary, use these files to control the list of allowable datanodes. dfs.blocksize
268435456 HDFS blocksize of 256MB for large file-systems. dfs.namenode.handler.count
100 More NameNode server threads to handle RPCs from large number of DataNodes. - configurations for SNN:
| Parameter | Value | Notes |
| ------------------------------------ | ------------- | ----------------------------------------------------- |
| dfs.namedoe.secondary.http-address | 0.0.0.0:50090 | The secondary namenode http server address and port. |
| dfs.namenode.secondary.https-address | 0.0.0.0:50091 | The secondary namenode HTTPS server address and port. |
+ configurations for DN:
| Parameter | Value | Notes |
| ----------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `dfs.datanode.data.dir` | Comma separated list of paths on the local filesystem of a `DataNode` where it should store its blocks. | If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. |
| | | |
- etc/hadoop/yarn-site.xml`
etc/hadoop/mapred-site.xml
角色在哪里启动?
启动
3.集群
NN | SNN | DN | |
---|---|---|---|
master | * | ||
slave1 | * | * | |
slave2 | * | ||
slave3 | * |
修改hadoop.tmp.dir=/var/hadoop/cluster
并修改core-site.xml
slaves
hdfs-site.xml
中相应的配置
scp -r /opt/hadoop/ hadoop@slave1:/opt/
若碰到scp permission denied 的情况,可使用chmod 777 /opt/hadoop
对使用权限进行修改
1 |