CLOUD 03:hadoop

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLOUD 03:hadoop相关的知识,希望对你有一定的参考价值。

hadoop 安装 (单机模式)

禁用 selinux 和 iptables
禁用 selinux 和 iptables
禁用 selinux 和 iptables
配置 /etc/hosts 保证所有主机域名能够相互解析
配置 /etc/hosts 保证所有主机域名能够相互解析
配置 /etc/hosts 保证所有主机域名能够相互解析

1、安装 java
yum install java-1.8.0-openjdk -y

验证:
java -version

2、安装 jps
yum install java-1.8.0-openjdk-devel -y

验证:
jps

3、安装 hadoop
tar zxf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 /usr/local/hadoop

修改配置文件的运行环境:
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
25 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre"
33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

验证:
cd /usr/local/hadoop
./bin/hadoop version

统计分析热词
创建数据源
mkdir input
在这个文件夹里面放入需要统计分析的数据
cp *.txt input/

统计分析1 单词出现的频率
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

统计分析2 某一个关键词出现的频率,例如 dfs 这个词前面字母是 h 的出现的频率
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output1 ‘(?<=h)dfs‘

排错 1
提示 JAVA_HOME is not set and could not be found
表示 JAVA_HOME 没有设置
解决方法:
设置 hadoop-env.sh 里面的 JAVA_HOME 或在运行脚本前面加入前置变量设置
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre" ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

排错 2
提示 java.net.UnknownHostException: host: host: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
表示主机名没有 IP 解析
解决方法:
在 /etc/hosts 里面增加 主机名 IP 对应关系

排错 3
提示:17/07/24 23:10:46 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/usr/local/hadoop/output already exists
表示输出的文件目录已经存在
解决方法:
删除已经存在的目录或更改结果保存位置

伪分布式配置:

xml 配置格式
<property>
<name>关键字</name>
<value>变量值</value>
<description> 描述 </description>
</property>

配置文件路径 /usr/local/hadoop/etc/hadoop/
1 配置 hadoop-env.sh
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre"
export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
查找 JAVA_HOME
readlink -f $(which java)

2 配置 core-site.xml #hadoop 核心配置文件
https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>file:///</value> #使用本地文件系统存储 或 hdfs://namenode.ip:9000
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value> #除了hadoop软件后,所有hadoop数据的根目录
</property>
</configuration>

3 配置 hdfs-site.xml #hdfs核心配置文件
https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<description> 文件复制份数 </description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.4.10:50070</value> #namenode 的IP 和端口号
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.4.10:50090</value> #namenode 的IP 和端口号
</property>
</configuration>

常用配置选项
dfs.namenode.name.dir
dfs.datanode.data.dir
dfs.namenode.http-address
dfs.namenode.secondary.http-address
dfs.webhdfs.enabled #默认TRUE 可以web访问
dfs.permissions.enabled

4 配置 mapred-site.xml #mapred核心配置文件
https://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> #使用local或yarn管理
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

常用配置选项
mapreduce.framework.name
mapreduce.jobtracker.http.address
mapreduce.jobhistory.address
mapreduce.jobhistory.webapp.address

5 配置 yarn-site.xml #yarn核心配置文件
https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

<configuration>

yarn.nodemanager.aux-services myhadoop #指定计算方式 yarn.resourcemanager.hostname master #指定resourcemanager地址
常用配置选项 yarn.nodemanager.aux-services yarn.nodemanager.aux-services.mapreduce.shuffle.class yarn.resourcemanager.hostname --------------------------------------------------------- hadoop 完全分布式安装 1、规划集群 namenode ,secnedorynamenode, datanode 使用 4 台机器组件集群,其中 1台作为 master,其他3台做为 node 节点 master 上的角色 namenode , secnedorynamenode node 上的角色 datanode master ip => 192.168.4.10 node ip => 192.168.4.{11,12,13} 修改 /etc/hosts ,配置 ip 与名称的对应关系 禁用防火墙,禁用 selinux 在所有机器上 安装 java 运行环境 openjdk 和 jps 工具 在机器上设置 ssh-key 信任登录,保证 master 能登录所有主机,包括自己 修改SSH配置 vim /etc/ssh/ssh_config 58 StrictHostKeyChecking no readlink -f /usr/lin/java 在 master 上安装配置: 1、把软件解压拷贝到 /usr/local/hadoop 2、编辑配置文件 hadoop-env.sh 配置 JAVA_HOME , HADOOP_CONF_DIR xml 配置格式 关键字 描述说明 core-site.xml fs.defaultFS hdfs://master:9000 hadoop.tmp.dir /var/hadoop A base for other temporary directories. hdfs-site.xml dfs.namenode.http-address master:50070 dfs.namenode.secondary.http-address master:50090 dfs.replication 2 配置 vim slaves ,写入所有 datanode 节点 node01 node02 node03 同步所有文件到所有节点 rsync -azSH --delete /usr/local/hadoop m13:/usr/local/ 在所有节点上创建 hadoop.tmp.dir 指定的文件夹 mkdir /var/hadoop 在 master 上执行格式化 namenode 的操作 ./bin/hdfs namenode -format 启动集群 ./sbin/start-dfs.sh 验证集群: 在 master 上 jps 能看见 namenode ,secondarynamenode netstat -ltunp 能看见 9000,50070,50090 端口被监听 查看集群 ./bin/hdfs dfsadmin -report 在 node 上 jps 能看见 datanode netstat -ltunp 能看见 50075 被监听 排错: 所有的日志在本机的 logs 里面,查看对应的角色日志 通过 web 访问 hdfs角色 http://192.168.4.10:50070/ http://192.168.4.10:50090/ http://192.168.4.12:50075/ hdfs 基本使用 (即./bin/hadoop fs - linux命令) ./bin/hadoop fs #帮助信息 ./bin/hadoop fs -ls / ./bin/hadoop fs -mkdir /input ./bin/hadoop fs -put *.txt /input 上传 ./bin/hadoop fs -get *.txt /input/ 下载 cd /usr/local/hadoop/etc/hadoop cp mapred-site.xml.template mapred-site.xml 配置 mapred-site.xml mapreduce.framework.name yarn 配置 yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname master 配置以后同步到所有机器 rsync -azSH /usr/local/hadoop/etc m13:/usr/local/hadoop/ 启动服务 ./sbin/start-yarn.sh 验证配置: 在 master 上 jsp 能看见 resourecemanager,并且 netstat 可以看见 8088 端口打开 可以访问 http://master:8088/ 在 node 上 jps 可以看见 nodemanager ,并且 netstat 可以看见 8042 端口打开 可以访问 http://node01:8042/ http://192.168.4.10:50070/ http://192.168.4.10:50090 http://192.168.4.11:50075/ 在集群上做数据分析 ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep hdfs://192.168.4.10:9000/input hdfs://192.168.4.10:9000/output ‘(?<=h)dfs‘ 查看分析结果 ./bin/hadoop fs -cat hdfs://192.168.4.10:9000/output/* hdfs 进阶应用 NFS 网关 先停止所有服务 ./sbin/stop-all.sh 建用户 10机器#useradd -u 500 -g 100 nfsuser #uid好必须一样 15机器#useradd -u 500 -g 100 nfsuser /etc/hosts 增加 192.168.4.15 nfsgw #主机名必须也是nfsgw 并同步到所有机器 core-site.xml hadoop.proxyuser.nfsgw.groups hadoop.proxyuser.nfsgw.hosts * 表示全部允许 hadoop.proxyuser.nfsuser.groups * hadoop.proxyuser.nfsuser.hosts * for i in node{1..3} do 同步到所有主机 scp core-site.xml 192.168.4.13:/usr/local/hadoop/etc/hadoop/ 同步到15机器 rsync -azSH /usr/local/hadoop nfsgw:/usr/local/ hdfs-site.xml nfs.exports.allowed.hosts (* rw) dfs.namenode.accesstime.precision (3600000) #延长读取时间的更新,提升性能 nfs.dump.dir (/tmp/.hdfs-nfs) #转储目录 nfs.rtmax (4194304) #设定读buff大小 nfs.wtmax (1048576) #设定写buff大小 nfs.port.monitoring.disabled (false) 这里要注意 关闭系统的 portmap 和 nfs 服务添加用户 useradd -u 500 -g 100 nfsuser setfacl -m user:nfsuser:rwx logs 重启 hdfs 集群服务 ./bin/hdfs dfsadmin -report nfsgw机器: 启动 portmap ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap 服务 jps 有 Portmap yum remove rpcbind nfs-utils 启动 nfs3 服务 sudo -u 你core-site里面配置的用户 ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3 另一个机器挂载 yum -y install nfs-utils mount -t nfs -o vers=3,proto=tcp,noatime,noacl,nolock,sync 192.168.4.15:/ /mnt

以上是关于CLOUD 03:hadoop的主要内容,如果未能解决你的问题,请参考以下文章

google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?

Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?

Cloud Function 部署问题以安排每日 Cloud SQL 导出到 Google Cloud Storage

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?

在 IBM-Cloud-cloud 对象存储中保留啥作为网络鸭连接服务器端点 URL

spring-cloud-config-server