hadoop 集群搭建
一 、 前提准备
安装 jdk8,配置环境变量 在 /etc/profile 中 或者 ~/.bash_profile 中都可以
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0
export JRE_HOME=${JAVA_HOME}/jre
export MVN_HOME=/usr/apache-maven-3.6.0
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${MVN_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/opt/so/jna-4.5.1.jar
http://archive.cloudera.com/cdh5/cdh/5/ 在这里下载 hadoop-2.6.0-cdh5.7.0.tar.gz 压缩包
必须安装ssh并且必须运行sshd才能使用管理远程Hadoop守护程序的Hadoop脚本(如果要使用可选的启动和停止脚本)。此外,建议还安装pdsh以便更好地进行ssh资源管理。
安装ssh 可查看这篇博客 https://www.cnblogs.com/kaid/p/7985568.html
将hadoop-2.6.0-cdh5.7.0.tar.gz 放到 /opt 目录下并 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz命令进行解压
二、hadoop本地模式搭建
(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
(2)默认情况下,Hadoop配置为以非分布式模式运行,作为单个Java进程。这对调试很有用。
以下示例复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。输出将写入给定的输出目录。
$ mkdir input
$ cp /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop*.xml input
$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output'dfs [az。] +'
$ cat output/*
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3
三 、 hadoop 伪分布式搭建
(1)配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
(2)配置 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.42.85:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
(3)配置hdfs-site.xml
只有一个节点,就是自己,所以副本数配置为1
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(4)配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(5)配置 mapred -site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(6)检查您是否可以在没有密码的情况下ssh到localhost
ssh localhost
如果在没有输入密码不能 ssh到localhost的情况下请执行如下命令:
$ ssh-keygen -t rsa -P'' - f~ / .ssh / id_rsa
$ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
$ chmod 0600~ / .ssh / authorized_keys
(7)启动hadoop,访问 http://192.168.42.85:50070 hdfs web 页面 和 http://192.168.42.85:8088 和 yarn web 页面
./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh
或者可以使用
./sbin/start-all.sh 相当于 (./sbin/start-dfs.sh 和 ./sbin/start-yarn.sh两个命令)
四、hadoop 全分布式集群搭建
准备三台机器,你可以 创建 一个hadoop 用户 用来区分 root 用户
执行 hostname 命令查看当前主机名 localhost.localdomain
(1)分别修改三台机器的hostname 和 hosts
执行 hostname 命令查看当前主机名 localhost.localdomain
机器1:hostname 设置 :
vim /etc/hostname
hadoop000
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop000vim /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
机器2:
vim /etc/hostname
hadoop001
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop001vim /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
机器3:
vim /etc/hostname
hadoop002
vim /etc/sysconfig/network
NETWORKING=YES
HOSTNAME=hadoop002vim /etc/hosts ,将localhost.localdomain 替换为 要设置的主机名
192.168.42.85 hadoop000
192.168.42.71 hadoop001
192.168.42.70 hadoop002
(2)ssh 免密码登录
$ ssh-keygen -t rsa -P'' - f~ / .ssh / id_rsa
$ cat~ / .ssh / id_rsa.pub >>〜/ .ssh / authorized_keys
$ chmod 0600~ / .ssh / authorized_keys
尝试 执行
ssh hadoop000
ssh hadoop001
ssh hadoop002
(3)以hadoop000 机器 为例 进行配置
- 配置 /opt/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop_env.sh 的 java_home
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
- 配置 core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop000:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
- 配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/tmp/dfs/data</value>
</property>
- 配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
//告诉resourceManager 跑在那个机器上
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop000</value>
</property>
- 配置mapred -site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop000:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop000:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
修改 从节点配置 vim slaves
hadoop000
hadoop001
hadoop002
(4)hadoop000机器配置好 了之后,直接将hadoop 分发到 另外两台机器上
分发公钥到集群中的其他机器上面
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop000
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop002
分发hadoop安装包到 hadoop001 和 hadoop2 节点上
scp -r /opt/hadoop-2.6.0-cdh5.7.0 root@hadoop001: /opt/
scp -r /opt/hadoop-2.6.0-cdh5.7.0 root@hadoop002: /opt/
分发环境变量配置文件到 hadoop001 和 hadoop002 节点上
scp ~/.bash_profile root@hadoop001:~/
scp ~/.bash_profile root@hadoop002:~/
(5)启动hadoop集群
只需要在 hadoop000上面启动即可
hdfs namenode -format
./sbin/start-all.sh
如果启动namenode 或者 datanode 启动失败,可以查看日志找到报错原因 或者 删除 配置在hdfs-site.xml
中的namenode 和datanode 的目录
cd /home/hadoop/app/tmp
rm -rf dfs
cd $HADOOP_HOME
#重新启动
hdfs namenode -format
./sbin/start-all.sh
#停止hadoop集群
./sbin/stop-all.sh
(6)开发 hadoop demo项目 查看码云 地址 https://gitee.com/dzxmy/hadoop-train
(7)更详细的集群搭建请参考 https://blog.csdn.net/hliq5399/article/details/78193113#commentBox
和 https://www.cnblogs.com/smartloli/p/4298430.html
(8)哥不是小萝莉 大数据 系列教程博客 https://www.cnblogs.com/smartloli/category/649544.html