前言 参考文章: 1.大数据开发入门之hadoop单机版部署 这个我觉得比我写的调理要清楚,结合这篇文章,可以搭建单机版的。 2.Centos8安装 Hadoop3 详细操作(含图文) 3.Hadoop默认端口说明
关于用户和用户组 因为我使用的是虚拟机的方式安装的hadoop程序,所以一般都是直接以root方式登录了,但是在安装的时候,很多的文章就是建议创建一个单独的hadoop用户,使用这个用户进行安装和配置hadoop。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 groupadd hadoop useradd -g hadoop hadoop passwd hadoop usermod -G hadoop hadoop su hadoop visudo hadoop ALL=(ALL) ALL
参考文章: 1.设置Hadoop的执行用户 可以在/etc/profile 配置文件中, 添加如下代码: export HADOOP_USER_NAME=hdfs 2.linux怎么创建新用户和设置密码 3.Linux 用户和用户组管理
1.关闭防火墙 1 2 systemctl stop firewalld systemctl disable firewalld
参考文章: 1.Centos 6.5 关闭防火墙的步骤
2.安装JDK 主要步骤:为下载->解压->配置/etc/profile环境目录->source /etc/profile生效
1 2 3 4 export JAVA_HOME=/usr/java/jdk1.8.0_201 export JRE_HOME=/usr/java/jdk1.8.0_201/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
3.ssh-keyen生成密钥 主要步骤:安装openssh-server->使用ssh-keygen生成密钥->将生成的id_rsa.pub中的内容添加到authorized_keys(三台内容一样,都包含其他两台的ip_rsa.pub内容)
1 2 3 4 5 6 ssh-keygen -t rsa -C "hadoop01" ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys
验证:ssh root@hadoop02,出现登录成功就可以了。
3.下载hadoop压缩包到服务器解压 下载 相应版本的hadoop, 新建hadoop目录-> 解压hadoop压缩包-> 配置hadoop环境变量-> 验证安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 mkdir -p /usr/local/hadooptar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/ vi /etc/profile export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1export PATH=$PATH :$HADOOP_HOME /bin:$HADOOP_HOME /sbinsource /etc/profilehadoop version
4.新建相关数据目录 1 2 3 4 5 6 7 cd /usr/local/hadoop/mkdir tmp mkdir var mkdir hdfs mkdir hdfs/name mkdir hdfs/data
5.配置hadoop 主要配置以下内容/etc/hosts内容,以及/usr/local/hadoop/hadoop-3.1.1/etc/hadoop目录下的workers、hadoop-env.sh、core-site.xml、hdfs-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 vi /etc/hosts 192.168.1.33 hadoop01 192.168.1.34 hadoop02 192.168.1.35 hadoop03 cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoopvi workers hadoop02 hadoop03 vi hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_65export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=rootvi core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.33:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> vi hdfs-site.xml <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/dfs/name</value> <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/dfs/data</value> <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description> </property> <property> <name>dfs.namenode.http-address</name> <value>hadoop01:50070</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop01:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false </value> <description>need not permissions</description> </property> hadoop classpath vi yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.application.classpath</name> <value>输入刚才返回的Hadoop classpath路径</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoop01:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop01:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoop01:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoop01:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoop01:8088</value> </property> vi mapred-site.xml <property> <name>mapred.job.tracker</name> <value>hadoop01:49001</value> </property> <property> <name>mapred.local.dir</name> <value>/usr/local/hadoop/var</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
6.同步配置文件 根据自己的情况,将主节点上的配置文件,同步复制到相应的从节点上,比如我这里,就不用复制java环境,我的/etc/profile文件也是通过复制相关的hadoop配置实现的。然后在从节点上使用: source /etc/profile 重新加载配置文件
1 2 3 4 5 6 7 scp -r /usr/local/java hadoop02:/usr/local/java scp -r /usr/local/hadoop hadoop02:/usr/local/hadoop scp -r /etc/profile hadoop02:/etc/ scp -r /usr/local/java hadoop03:/usr/local/java scp -r /usr/local/hadoop hadoop03:/usr/local/hadoop scp -r /etc/profile hadoop03:/etc/
7.格式化 在主节点上执行格式化,运行之后不报错,并在倒数第五六行有successfully即为格式化节点成功。
8.启动集群 使用下面的命令启动hadoop集群,或者是在hadoop安装目录sbin下执行。
主节点:
从节点:
参考文章: 1.Hadoop2.x实战:Hadoop安装与配置 2.hadoop的安装与配置方法详解 3.Hadoop之——重新格式化HDFS的方案 4.hadoop格式化(hadoop format)的注意事项 5.hadoop集群搭建-hadoop3.1.1 6.Centos7上搭建Hadoop3.1.1集群 7.Hadoop setup 一些问题及解决
问题汇总 (1) http 9000端口无法使用 在浏览器中输入192.168.1.33:9000,发现打不开9000网页,而使用192.168.1.33:50070就可以打开dfshealth监控网站
使用命令:netstat -tpnl,可以查看9000端口是打开的。
参考文章: 1.windows 安装开启 telnet 服务 2.Hadoop本地开发,9000端口拒绝访问
(2) WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
进入hadoop的sbin目录,启动start-dfs.sh出现如下警告,或者是运行:hadoop fs -ls /,start-all.sh等命令,都会出现这个错误:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。
1 2 3 4 5 6 7 stop-all.sh export HADOOP_ROOT_LOGGER=DEBUG,consolestart-all.sh
发现了如下错误:GLIBC_2.14’ not found (required by /usr/local/hadoop/hadoop-3.2.1/lib/native/libhadoop.so.1.0.0)
参考文章: 1.异常解决:util.NativeCodeLoader: Unable to load native-hadoop library for your platform 2.Hadoop出现错误:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable,解决方案 3.Hadoop “Unable to load native-hadoop library for your platform” warning 4.Compile Apache Hadoop on Linux (fix warning: Unable to load native-hadoop library) 5.【解决办法】hadoop运行warn “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
更新 经过艰苦的探索,终于在centos6.5 64位虚拟机上编译成功了hadoop-3.2.1(Hadoop编译安装 ),然后:
Check hadoop-dist/target/hadoop-2.4.0.tar.gz (e.g., use this as your hadoop binary) or hadoop-dist/target/hadoop-2.4.0. If you have already installed a 32bit Hadoop, then you need only to replace the native libs in $HADOOP/lib/ with the new native libs (hadoop-dist/target/hadoop-2.4.0/lib) and remove (if applicable) from $HADOOP/etc/hadoop-env.sh:
1 2 export HADOOP_COMMON_LIB_NATIVE_DIR="~/hadoop/lib/" export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=~/hadoop/lib/"
将编译好的hadoop-dist/target/hadoop-3.2.1/lib中的lib替换掉安装的$HADOOP/lib/,删除/usr/local/hadoop/hadoop-3.1.1/etc/hadoop/hadoop-env.sh中的以上代码(如果有的话)。