9.1 规划
node1 | node2 | node3 | node4 |
NameNode | SecondaryNameNode | ||
DataNode-1 | DataNode-2 | DataNode-3 |
1) 基础设置
a) 网络
b) Ssh: 哪个节点将公钥分发,成为启动 start-dfs.sh 脚本的主机和这个主机上的进程没有关系
c) Jdk
2) 应用搭建
a) 部署&配置
b) 执行:
9.2 搭建步骤
9.2.1 免密钥设置
四台服务器之间互相均可以免密登录
a、 首先在四台服务器上都要执行:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
b、在 node1 上将 node1 的公钥拷贝到 authorized_keys 中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将该文件拷贝给 node2:
scp ~/.ssh/authorized_keys node2:/root/.ssh/
c、在 node2 中将 node2 的公钥追加到 authorized_keys 中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将该文件拷贝给 node3:
scp ~/.ssh/authorized_keys node3:/root/.ssh/
d、在 node3 中将 node3 的公钥追加到 authorized_keys 中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将该文件拷贝给 node4:
scp ~/.ssh/authorized_keys node4:/root/.ssh/
e、在 node4 中将 node4 的公钥追加到 authorized_keys 中:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将该文件拷贝给 node1、node2、node3:
scp ~/.ssh/authorized_keys node1:/root/.ssh/
scp ~/.ssh/authorized_keys node2:/root/.ssh/
scp ~/.ssh/authorized_keys node3:/root/.ssh/
9.2.2 JDK 安装环境变量配置
node1-node4
mkdir /opt/apps
将 jdk-8u221-linux-x64.rpm 上传到 node1/opt/apps
将/opt/apps 下的 jdk.rpm scp 到 node2、node3、node4 的对应目录中
scp jdk-8u221-linux-x64.rpm node2:`pwd`
scp jdk-8u221-linux-x64.rpm node3:`pwd`
scp jdk-8u221-linux-x64.rpm node4:`pwd`
在 node1、node2、node3、node4 上安装 jdk 并配置 profile 文件
rpm -ivh jdk-8u221-linux-x64.rpm
将 hadoop 安装文件上传到 node1 的/opt/apps 目录下,并解压到/opt 目录下
tar -zxvf hadoop-2.6.5.tar.gz -C /opt
node1 上修改环境变量
export HADOOP_HOME=/opt/hadoop-2.6.5
export
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
Node2 上修改环境变量:
export HADOOP_HOME=/opt/hadoop-2.6.5
export
PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
让配置文件生效:
source /etc/profile
将 node2 的/etc/profile 拷贝到 node3、node4 上并执行. /etc/profile
scp /etc/profile node[34]:`pwd`
9.2.3 Hadoop 相关配置
先在 node1 上配置好,然后将之 scp 到 node2-node4 上
cd /opt/hadoop-2.6.5/etc/hadoop/
1. hadoop-env.sh 配置
$HADOOP_HOME/etc/hadoop
由于通过 SSH 远程启动进程的时候默认不会加载/etc/profile 设置,JAVA_HOME 变量就加载不到,需要手动指定。
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
2. 修改 slaves 指定 datanode 的位置
node2
node3
node4
3. 修改 hdfs-site.xml
指定 SNN 的位置
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
4. 修改 core-site.xml
<configuration>
<!--用来指定 hdfs 的老大,namenode 的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定 hadoop 的临时目录位置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/var/bjsxt/hadoop/full</value>
</property>
</configuration>
5. 拷贝到 node2-node4 上
先将之打成压缩包
[root@node1 opt]# tar -zcvf hadoop-2.6.5.tar.gz hadoop-2.6.5/
将/opt/hadoop-2.6.5.tar.gz scp 到 node2、node3、node4 的对应目录中
scp hadoop-2.6.5.tar.gz node2:/opt
scp hadoop-2.6.5.tar.gz node3:/opt
scp hadoop-2.6.5.tar.gz node4:/opt
node2、node3、node4 分别解压
tar -zxvf hadoop-2.6.5.tar.gz
9.2.4 格式化并启动
格式化
在 node1 上执行:hdfs namenode -format
启动即可(该命令在四台服务器上哪一台执行都可以)
start-dfs.sh
http://192.168.20.201:50070
[root@node1 opt]#hdfs dfs -mkdir -p /user/root
[root@node1 opt]#hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
9.2.5 停 止
stop-dfs.sh